在Linux/X11上以编程方式启动独立的Adobe flashplayer

2024-05-10 21:15:04 发布

您现在位置:Python中文网/ 问答频道 /正文

从命令行启动独立flashplayer时,除了.swf文件之外,它不接受任何参数。我需要播放器全屏运行,没有窗口边框等。这可以通过在程序启动后按ctrl+f来完成。我想以编程的方式完成这项工作,因为我需要它在没有任何人机交互的情况下全屏启动。

我的猜测是,我需要知道如何获取窗口的句柄,然后发送一个类似于“ctrl+f”按键的事件。

如果有什么不同的话,看起来flashplayer是一个gtk应用程序,我已经安装了python和pygtk。

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

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

Tags: 文件命令行程序参数example编程方式情况
3条回答

其实我早就这么做了,但这不是小事。我们所做的是使用Sawfish window manager并编写一个钩子来识别flashplayer窗口,然后剥去所有装饰并全屏捕捉它。

不使用窗口管理器,通过从外部应用程序注册X窗口创建事件,这可能是可能的,但我对X11还不够熟悉,无法告诉您如何实现。

另一个选择是编写一个pygtk应用程序,将独立的flash播放器嵌入到gtk.Socket中,然后调整自己的大小。仔细想想,这可能是你最好的选择。

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

它来自于[http://gwenole.beauchesne.info//en/projects/nspluginwrapper](nspluginwrapper项目)

您可以使用一个专用的应用程序,将击键发送到窗口管理器,如果窗口开始是屏幕上的活动窗口,则窗口管理器应将击键传递给flash。不过,这很容易出错,因为在启动flash和窗口出现之间存在延迟。

例如,脚本可以执行以下操作: flashplayer*.swf 睡眠3&;xsendkey控件+F

应用程序xsendkey可以在这里找到:http://people.csail.mit.edu/adonovan/hacks/xsendkey.html 如果没有特定的窗口,它会将其发送到根窗口,由窗口管理器处理。您还可以尝试首先使用xprop或与之相关的东西计算出窗口id。

另一个选项是窗口管理器,它能够记住您的设置并自动应用它们。例如,Fluxbos提供了此功能。如果flashplayer支持调整大小,可以将fluxbox设置为减少窗口装饰并将其扩展到整个屏幕。这也不是很好,因为它可能会影响你打开的所有flashplayer窗口。

相关问题 更多 >