[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:87970] Re: コンソールプログラムからのX-WindowアプリのWindowIDを取得するには


塩崎です。


From: Hiroaki Sakurada <hiroman _at_ topaz.ocn.ne.jp>
Subject: [linux-users:87968] コンソールプログラムからのX-WindowアプリのWindowIDを取得するには
Date: Mon, 1 Oct 2001 16:16:24 +0900
Message-ID: <20011001155824.0105.HIROMAN _at_ topaz.ocn.ne.jp>

> ・塩崎様からの情報から・・・
> XQueryTree(...)を使用すればいい・・・
> ということですが、この関数とXFetchName(...)関数を使用して、
> ウィンドウ名で検索すればいいのでしょうか?
> 素人考えから思いついたのですが・・・

そのウィンドウを一意に特定できる名前が付いているのならば、
それで十分でしょう。

普通にやると全ウィンドウをなめることになりかねないので、
クライアントの最上位のウィンドウであることがわかってるのならば、

Display *dpy;
int i, scr, num;
Window dum, win, *kids;
char *name;

...

XQueryTree(dpy, RootWindow(dpy, scr), &dum, &dum, &kids, &num);

for (i=0; i<num; i++) {
  win = XmuClientWindow(dpy, kids[i]);
  XFetchName(dpy, win, &name);
  if (!strcmp(name, "funyu")) {
    /* match */
  }
  XFree(name);
}

みたいにします。

一方で、クライアントの最上位のウィンドウでない場合は、
XQueryTree を再帰的に繰り返して真面目に子供を辿っていくしかないでしょう。


では。
--
Takuya SHIOZAKI / ASTEC Products, Inc.

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
References: