在Linux/X11上通过编程启动独立的Adobe Flash播放器

7 投票
6 回答
10929 浏览
提问于 2025-04-11 09:36

独立的Flash播放器在命令行启动时,只需要一个.swf文件作为参数,不需要其他的东西。我想让播放器全屏显示,也就是没有窗口边框之类的。这可以通过在程序启动后按下ctrl+f来实现。不过,我想要的是让它自动全屏启动,不需要任何人来操作。

我猜我需要找到这个窗口的句柄,然后发送一个类似于“ctrl+f”这个按键的事件。

如果有帮助的话,Flash播放器看起来是一个gtk应用程序,而我已经安装了Python和pygtk。

更新(这是我使用的解决方案... 感谢ypnos的回答):

./flashplayer http://example.com/example.swf & sleep 3 && ~/xsendkey -window "Adobe Flash Player 10" Control+F

6 个回答

1

其实我很久以前就做过这个,不过当时并不是小事。我们使用了Sawfish窗口管理器,然后写了一个小程序来识别Flash播放器的窗口,接着把所有的边框去掉,让它全屏显示。

其实不使用窗口管理器也有可能做到这一点,可以通过外部程序注册X窗口创建事件,但我对X11不太熟悉,所以不能告诉你具体怎么做。

还有一个选择是写一个pygtk应用,把独立的Flash播放器嵌入到gtk.Socket里,然后调整它的大小。经过一番思考,这可能是你最好的选择。

1
nspluginplayer --fullscreen src=path/to/flashfile.swf

这个内容来自于 [http://gwenole.beauchesne.info//en/projects/nspluginwrapper 项目]

7

你可以使用一个专门的应用程序,它会把按键发送给窗口管理器,然后窗口管理器再把这些按键传给Flash。如果窗口一开始就是屏幕上活跃的窗口,这样做是可行的。不过,这种方法有点容易出错,因为启动Flash和窗口显示之间可能会有延迟。

比如,你的脚本可以这样写: flashplayer *.swf sleep 3 && xsendkey Control+F

应用程序xsendkey可以在这里找到:http://people.csail.mit.edu/adonovan/hacks/xsendkey.html。如果不指定具体的窗口,它会把按键发送到根窗口,这个窗口由你的窗口管理器处理。你也可以先用xprop或者其他相关工具找出窗口的ID。

另一个选择是使用一种能够记住你设置的窗口管理器,并自动应用这些设置。例如,Fluxbox就提供了这个功能。如果Flash播放器支持调整大小,你可以设置Fluxbox让窗口没有边框,并把它拉伸到整个屏幕。这种方法也不是特别好,因为它可能会影响你打开的所有Flash播放器窗口。

撰写回答