Linux/X11 上でスタンドアロン Adob​​e Flashplayer をプログラムで起動する

StackOverflow https://stackoverflow.com/questions/164460

質問

スタンドアロンの Flashplayer は、コマンド ラインから起動するときに .swf ファイル以外の引数を受け取りません。プレーヤーを全画面表示にし、ウィンドウの境界線などを表示しないようにする必要があります。これは、プログラムの開始後に Ctrl+F を押すことで実行できます。人間の介入なしで全画面で起動する必要があるため、これをプログラムで実行したいと考えています。

私の推測では、ウィンドウのハンドルを取得して、「ctrl+f」キーストロークのようなイベントをウィンドウに送信する方法が必要だと思います。

何か違いがあるとすれば、flashplayer は gtk アプリケーションであり、pygtk がインストールされた Python があるようです。

アップデート (私が使用した解決策...ypnos の回答に感謝します):

./flashplayer http://example.com/example.swf & sleep 3 && ~/xsendkey -window "Adobe Flash Player 10" Control+F
役に立ちましたか?

解決

ウィンドウが画面上でアクティブなウィンドウとして起動した場合、キーストロークをウィンドウマネージャーに送信する専用のアプリケーションを使用して、キーマネージャーをフラッシュに渡す必要があります。ただし、フラッシュの開始からウィンドウが表示されるまでの遅延のため、これはかなりエラーが発生しやすくなります。

たとえば、スクリプトで次のようなことができます。 flashplayer * .swf スリープ3&& xsendkey Control + F

xsendkeyアプリケーションは、次の場所にあります。 http://people.csail .mit.edu / adonovan / hacks / xsendkey.html 特定のウィンドウを指定せずに、ウィンドウマネージャによって処理されるルートウィンドウに送信します。 xpropまたはそれに関連するものを使用して、最初にWindow idを把握することもできます。

もう1つのオプションはウィンドウマネージャーで、設定を記憶して自動的に適用することができます。たとえば、Fluxbosはこの機能を提供します。 flashplayerがサイズを変更することをサポートしている場合、fluxboxを設定してWindowを無装飾にし、画面全体に広げることができます。これは、これまでに開いたすべてのFlashplayerウィンドウに影響を与える可能性があるため、あまり良くありません。

他のヒント

これはかなり前に行ったことがありますが、ささいなことではありませんでした。私たちがやったのは、 Sawfishウィンドウマネージャーを使用して、Flashplayerウィンドウを認識するフックを作成してから、すべての装飾を取り除き、全画面にスナップします。

外部アプリケーションからのXウィンドウ作成イベントを登録することで、ウィンドウマネージャーを使用せずにこれが可能になる場合がありますが、その方法を説明するX11についてはあまり詳しくありません。

もう1つのオプションは、gtk.Socket内にスタンドアロンフラッシュプレーヤーを埋め込み、それ自体のサイズを変更するpygtkアプリケーションを作成することです。少し考えてみると、これが最善の策かもしれません。

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

[ http://gwenole.beauchesne.info/ / en / projects / nspluginwrapper](nspluginwrapper プロジェクト)

  

もう1つのオプションは、gtk.Socket内にスタンドアロンフラッシュプレーヤーを埋め込み、それ自体のサイズを変更するpygtkアプリケーションを作成することです。少し考えてみると、これが最善の策かもしれません。

これはまさに私がやったことです。それに加えて、私のプレーヤーはXcomposite、Xfixes、Cairoを介してFlashコンテンツをスケーリングします。 Pythonソースを含む.debは次の場所にあります。 http://www.crutzi.info/crutziplayer

bmdhacksが言及しているメカニズムと同様のメカニズムを使用して、openboxを使用してこれを実行しました。このことから私が注意したことは、スタンドアロンのフラッシュプレーヤーは、最大化された装飾されていないウィンドウで同じプレーヤーよりもかなり悪いフルスクリーンを実行したことでした。 (それはメニューバーのために迷惑なことに適切にフルスクリーンではありません)。メニューを非表示にするために、カスタムgtkテーマを使用して実行することを考えていました。ただし、これはパフォーマンスの問題です。現在フルスクリーンが正常に機能する場合、それは不必要に複雑です。 OLPC XOで実行していましたが、パフォーマンスが問題になりました。

nspluginplayerにはあまり運がありませんでした(バグが多すぎると思います)。

最終的には、実行中のフラッシュを作成するだけの余裕があったので、フラッシュ自体にコードを配置するだけでした。同様のトークンにより、フラッシュ内にフラッシュを埋め込むことができるため、フルスクリーンに自動的に移動し、ターゲットsfwを含む小さなスタブswfを作成できるはずです。

Acton スクリプト 3 cmd を使用する必要があります。

stage.displayState = StageDisplayState.FULL_SCREEN;

「Adobe Action script 3 プログラミング」を参照してください。

ただし注意してください:全画面表示にすると、表示パフォーマンスが低下します。

こんな問題があるんです...Linux ではさらに!!!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top