ページ 11

指定した座標の無効なウィンドウのハンドルの取得

Posted: 2006年4月09日(日) 16:55
by CURA
件名の通り、指定した座標の無効状態のウィンドウハンドルを取得したいと思います。
無効でない普通のウィンドウならば、WindowFromPointを使用すればできますが、無効のウィンドウの場合はこの関数ではできないため、どうすればよいのでしょうか。
ChildWindowFromPointという関数があり、これは有効無効に関わらず取得できるようですが、これだと指定したウィンドウの子ウィンドウしか取得できないんですよね?
子ウィンドウでないものを取得したいのですが。
ChildWindowFromPointの、親ウィンドウを指定する所を0にしても、上手くできません。
どうしたらよいでしょうか。教えて下さい。

Re: 指定した座標の無効なウィンドウのハンドルの取得

Posted: 2006年4月09日(日) 17:35
by 7
> ChildWindowFromPointという関数があり、これは有効無効に関わらず取得できるようですが、これだと指定したウィンドウの子ウィンドウしか取得できないんですよね?
> 子ウィンドウでないものを取得したいのですが。
GetParent()関数というものがあります。

> 無効でない普通のウィンドウならば、WindowFromPointを使用すればできますが、無効のウィンドウの場合はこの関数ではできないため、どうすればよいのでしょうか。
これは分かりません...。

Re: 指定した座標の無効なウィンドウのハンドルの取得

Posted: 2006年4月09日(日) 18:11
by NoWest
> 件名の通り、指定した座標の無効状態のウィンドウハンドルを取得したいと思います。
> 無効でない普通のウィンドウならば、WindowFromPointを使用すればできますが、無効のウィンドウの場合はこの関数ではできないため、どうすればよいのでしょうか。
直接WindowFromPoint関数を使うことを考えずに、遠回りを考えましょう。

考え方は次の通り、

1.現在デスクトップ上にある全てのウィンドウを列挙する。
2.列挙されたウィンドウの中から無効になっているものを探す。
3.さらに無効状態のウィンドウの中からウィンドウ領域内に
  指定された座標が含まれているウィンドウを探す。

EnumWindow関数辺りをググって見てください。