このXQueryTreeを使用すると、現在アクティブなウィンドウまたは一番上のウィンドウを見つけることができます。ここで
は、ディスプレイ与えられたとき、それはフォーカスが現在のウィンドウを見つけるだろう、関数である。
static Window
GetCurrWindow(d)
Display *d;
{
Window foo;
Window win;
int bar;
do{
(void) XQueryPointer(d, DefaultRootWindow(d), &foo, &win,
&bar, &bar, &bar, &bar, &bar);
} while(win <= 0);
#ifdef VROOT
{
int n;
Window *wins;
XWindowAttributes xwa;
(void) fputs("=xwa=", stdout);
/* do{ */
XQueryTree(d, win, &foo, &foo, &wins, &n);
/* } while(wins <= 0); */
bar=0;
while(--n >= 0) {
XGetWindowAttributes(d, wins[n], &xwa);
if((xwa.width * xwa.height) > bar) {
win = wins[n];
bar = xwa.width * xwa.height;
}
n--;
}
XFree(wins);
}
#endif
return(win);
}
http://tronche.com/gui/x/xlib/window-information/XQueryTree.html
私はソースが見つかりました:
http://examples.oreilly.com/networksa/tools/xsnoop.c
を幸運
この値は、当然のことながら、Xlibのライブラリ呼び出しを使用して取得することができる
xprop -root _NET_ACTIVE_WINDOW
:10
エイデン、ありがとうございました。このコードは私を助けるでしょう。 私はそれを試して、このウィンドウにフォーカスがない場合でもマウスポインタの下にあるウィンドウを報告します。 実際にフォーカスが当てられているウィンドウを知りたい。私のアプリがリスナーとして自分自身を登録する方法はありますか?または、マウスの位置を使わなくてもこの情報を与えることができる機能はありますか? もう一度ありがとうございます。 –
@Marcio - xprop.cのxprop.cソースファイルを調べて、libx11がその情報を取得するために使用する機能について調べる価値があります:) –
xprop.c ans xsnoop.cを見ました。私は、XSetInputFocusで使用するコードを適合させ、私が望む動作を得ることができると信じています。 よろしくお願いいたします。 –