2016-03-29 8 views
0

私はQt/C++でgstreamerを使用していますので、[MyXid]を自分のコンピュータのすべてのウィンドウのXidで置き換えて "ximagsrc xid = [MyXid] 。Qt/C++はすべてのアプリケーションウィンドウのXidを取得します

wmctrl -l 
0x02a00002 0 Fry XdndCollectionWindowImp 
0x02a00005 0 Fry unity-launcher 
0x02a00008 0 Fry unity-panel 
0x02a0000b 0 Fry unity-dash 
0x02a0000c 0 Fry Hud 
0x02c0000a 0 Fry Desktop 
... 

は、IDを取得する: 私は、次のコマンドラインを見つけました。 (例えば、「ximagsrc XID = 0x02a00002」を使用して、その後できるI'am)

しかし、私はQT/C++でのプログラミングと

だ私は、自動的にこれらの値を取得したいのですが。このコマンドラインをC++で起動することもできますが、 "wmctrl"がコンピュータにインストールされていないと、プログラムが動作しません。 (それは私にとっては悪い方法かもしれませんね。)

C++やQtでこれを行う方法はありますか?

ありがとう、

素敵な一日を!

答えて

1

代わりwmctrlを使用して、あなたはまた、より容易に利用可能とすることができる、xwininfoを使用することができます。

この機能をプログラムに実装する場合は、xlibまたはxcbを使用して、この情報をXサーバーから取得するクライアントを実装できます。ソースコードがwmctrlまたはxwininfoであることを確認してください。

+0

ありがとう、私はwmctrlのソースコードを探しています。幸いにも、それは私のプロジェクトにそれを追加することができるので、Cコードです!私はxwininfoと同じことだと思います。私はなぜ他のものより優れているのか分かりませんが、私はwmctrlが情報を表示する方法が好きです。 – camb

+0

xwininfoの使用は、標準的なXorgインストールの一部であるため、wmctrlよりもインストールされる可能性が高いため、推奨されています。 – hmn

0

xwininfoを使用してみてください:xwininfo -root -children

0

お返事ありがとうございます。

私はついにwmctrlのソースコードを取得し、必要なものを得るために変更しました。Windowsで動作すると思います。残念ながら、それはMacでは動作しませんが、とにかくMacの録画画面用のgstreamerはまだこれを行うことができない悪いプラグインです。

関連する問題