2012-11-30 5 views
5

私のpythonアプリケーションは、pygletウィンドウを作成するサブプロセスを起動します。 pygletウィンドウが開くと、それは他のすべてのウィンドウの前にあり、キーボードフォーカスをとります。 ピグレットウィンドウをバックグラウンドで開き、フォーカスを取らないようにしたいです。これは可能ですか?フォーカスをとらずにpygletウィンドウを開く

私が使用しているコードの機能縮小版:

import pyglet 

pyglet.window.Window() 
pyglet.app.run() 

私は違いを作る場合で、Windows 7を、使用しています。..

+0

もう一度考えると、pygletウィンドウw/oそれに入力を与える。たぶん、実際にあなたの大きなアプリケーションにPygletアプレットのOpenGLコンテキストを埋め込む方法を学ぶ必要があるでしょうか? –

答えて

1

逆転焦点はOS固有のものです:

pygletは、OSの特定のウィンドウ制御を提供していません。したがって、おそらく、迅速な&の汚れた解決策のためにアドホックなトリックを使用するか、Windows APIやCOMを使用してpywin32のような拡張機能を使用してアプローチして、タスクバーアプリケーションのスタックをリスト表示してフォーカスを奪う必要があります。また、コンテキストをpygletに委譲するために、独自のウィンドウ(操作可能なコンテナ)を作成することもできます。あなたのプログラムロジックに従って、あなたはちょうどあなたが視界に再生することができますアプリケーションの実際の上映を遅らせたい場合

は、一方の焦点の盗難

を遅らせる:

import pyglet 

w = pyglet.window.Window() 
w.set_visible(False) 
pyglet.app.run() 

だから場合ウィンドウコンテキストの委任で遊びたくない場合は、おそらく次のようにします:

  1. ウィンドウ
  2. をすると、そのハンドル/ ID
  3. を取得することによって、現在アクティブなウィンドウのフォーカスを見つける
  4. は、上記の前のウィンドウに

をバックフォーカスを与える、あなたのウィンドウは、Windows APIでの作業を前提と表示さ。私はMSDNに焦点を変更する例があったと思う。あなたが現在のウィンドウ(メインアプリケーション)のPIDを知っていれば、これはステップ2を簡素化するはずです。

関連する問題