2017-03-24 6 views
0

すべての検索では、Cを使ってX11でアクティブスクリーンのジオメトリを取得する方法、その画面には多くのモニタが含まれていて、同じコンピュータを同時に使用するユーザーが多い場合を除き、通常は1つの画面しかありません。Cで、X11を使用して画面内のアクティブモニタのジオメトリ(x、y、幅、高さ)を取得する方法

複数のモニタを考慮していないため、画面のジオメトリを取得するという回答は古くなっています。

したがって、マウスポインタまたはアクティブなウィンドウを持つモニタのジオメトリ(x、y、幅、高さ)を取得するにはどうすればよいですか?私はジオメトリが画面に対して相対的に必要です。

答えて

1

RandR拡張APIを使用する必要があります。 xrandrユーティリティのソースコードを入手し、そこから必要なものを盗みます。 XRRGetMonitors関数および関連するデータ構造が必要です。 xrandrを使用して、必要な情報をコマンドラインで入手することもできます。

アクティブなウィンドウが複数のモニターにまたがる可能性があり、ポインターを別のモニターに置くことができるため、アクティブモニターと同じことがあるかどうかわかりません。とにかく、XRRMonitorInfo構造には、モニターのジオメトリに関するすべての情報(サイズ(ピクセルとミリメートル)と論理スクリーン上の位置)が含まれているので、画面の座標のペアからモニター記述を抽出できます。

this answerも参照してください。

+0

Gdk + 3.0 3.22は、アクティブなウィンドウの大部分が入っているモニターを提供することによって、アクティブなモニターの質問に答えます。私はこれをX11ですべて実行しようとしていますが、答えは、行く方法のように見えます(2466行目からhttps://github.com/GNOME/gtk/blob/master/gdk/gdkdisplay.cから「最高の」モニターを見つけるという考えをコピーしてください)。 –

関連する問題