XCreateWindowを使用してウィンドウを作成するプログラムを作成しました。これは私のシステムと他の多くのシステムでは完全に動作しますが、多くの場合、それはいくつかの奇妙な問題を引き起こしています。例えば私がそこから取得したIDは、プログラムが起動された端末のIDと衝突します。そのような場合、gnome-terminalはウィンドウIDが0x2400001(親はroot)で、私のプログラムのウィンドウIDも0x2400001です(親もrootです)。何が間違っているかもしれないと示唆していますか?XCreateWindowは、既存のウィンドウと衝突するウィンドウIDを返します。
答えて
ウィンドウIDは、おそらくXサーバーへの各接続内で一意です(つまり、Xサーバーに接続する異なるプロセスが同じウィンドウIDを取得し、Xサーバーが接続ANDウィンドウIDを使用して内部的に区切ります)。
私はXがウィンドウIDについて約束をしていないと思います。それらはプロセスや何かを問わず一意であるため、他の目的のために使用しない方がよいでしょう。
各接続ごとに同じ値(例:1)で始まる連続する数値をウィンドウIDとして返すX実装があり、これはあなたの経験を説明するものではありません。すべてのクライアントの最初のウィンドウは、そのX実装で同じウィンドウIDを持つように見えます。
ウィンドウIDは、Xディスプレイで一意です。そうしないと、Xクライアントはお互いのウィンドウを参照できなくなります。 – daf
Xserverは、すべてのウィンドウに対して一意の不透明IDを作成します。 ウィンドウIDを特定するために使用しているメソッドが間違っている可能性があります。
あなたの質問は、別の問題の症状です。 あなたは本当に解決しようとしている問題は何ですか?
ウィンドウIDは、Xサーバーではなく、Xクライアントによって生成されます。 – daf
その他の回答に加えて、xwininfo -root -all
を実行してください(詳細は、マニュアルページを参照してください)。 gnome-terminalウィンドウIDとアプリケーションのウィンドウIDを確認してください。
- 1. ウィンドウの動きをシミュレートして衝突に反応する
- 2. 既存のウィンドウを閉じて新しいウィンドウを開き、アンカータグにIDを渡します。
- 3. Andengine - 既存との衝突を避けるスプライトの追加
- 4. 既存のウィンドウから新しいPyQt4ウィンドウを作成するには?
- 5. Google Advertising IDの衝突
- 6. Neo4J OGM Session.load(ID)が既存のIDのヌルオブジェクトを返します
- 7. DataMapperの命名規則が既存のMySQLテーブルと衝突する
- 8. TextureのSKPhysicsBodyはSpritekitの衝突でnullを返します
- 9. MacOS - ウィンドウIDを指定してウィンドウをアクティブにする
- 10. 既存のGoogleマップの情報ウィンドウを開きます
- 11. C++ CreateDIBitmapは、ウィンドウを移動するとnullを返します。
- 12. xulのウィンドウID
- 13. 楕円の衝突で処理ウィンドウが白く(瞬間的に)変わる
- 14. 既存のJavaフレームフォームを使用する別のウィンドウで
- 15. 既知入力のMD5衝突
- 16. JavaScriptの確認ウィンドウを返します
- 17. 子ウィンドウから親ウィンドウにデータを保存しますか?
- 18. 乱数ジェネレータの衝突テストで衝突が多すぎます
- 19. ウィンドウを通過するとPythonスクリプトが突然終了する
- 20. n体衝突検出とペアワイズ衝突検出の違いは?
- 21. wxPythonウィンドウID
- 22. 衝突中に衝突が止まるのを防ぐ方法
- 23. 既存のウィンドウへの参照を取得できません
- 24. 別の衝突検出を中断する衝突検出 - Swift
- 25. preg_matchとの衝突
- 26. Java SWTのウィンドウID
- 27. カメはTkinterと衝突する
- 28. Selenium Webドライバは、既に開いている既存のウィンドウに新しいタブを開きます
- 29. アニメーションイベントの衝突を検出します。
- 30. 壁に衝突するとリジッドボディキャラクターが跳ね返る(Autowalk.cs)
端末のウィンドウIDをどのように取得したらいいですか?また、あなたがやっていることをスケッチするコードスニペットが役に立つかもしれません。 – EFraim