ウィンドウのハンドルを列挙するには


夢見  2002-02-27 14:16:53  No: 75340  IP: [192.*.*.*]

はじめまして。はじめて質問させていただきます。
ウィンドウハンドル列挙を
コールバックプロシージャEnumWindowにより
取得する事が出来たのですが
タスクにいない?アプリケーションではない
ウィンドウハンドル取得されてしまうのですが
これを判定する方法はあるのですか
ウィンドウキャプションを列挙し選択されたウィンドウ
だけを常に手前に設定する処理を作成しています。
又、最初に取得したハンドルからウィンドウタイトルを取得
ユーザーオペレーションにより選択された時点で
ウィンドウを手前に持ってくるのですが
この時点で先に取得したハンドル値が変わっている
という事はあるのですか?
再度、ウィンドウタイトルからハンドルを取得しにいった方が
良いでしょうか?
宜しくお願いします。

編集 削除
たかみちえ  URL  2002-02-27 15:10:22  No: 75341  IP: [192.*.*.*]

まずひとつめから…

>  タスクにいない?アプリケーションではない
>  ウィンドウハンドル取得されてしまうのですが
  これで十分かどうか…、というか、十分ではないんですけど、
  IsWindowVisibleのAPIで、見えるウィンドウだけを列挙すれば、
だいたいアプリケーションのみになります。

  ほかにもIsなんとかのAPIはあるので、
くみ合わせればけっこう十分な効果があるかも…。

  あとはGetWindowLongとかで、ウィンドウスタイルを取得したり、
いろいろ組み合わせることもできます。

  つぎふたつめ…

>  この時点で先に取得したハンドル値が変わっている
>  という事はあるのですか?
  よくわかりませんけど、
  よく他の人の作ったサンプルやクラスなどで、
ハンドルをおしえて、あとはなにもしないというものがおおいですよね、
だから多分、変わったりすることはないんじゃないでしょうか?
そのウィンドウが、裏でいったん削除されたりした場合はそうでもないでしょうけど…。

  だから念のため、もういちど確認しておいても、無駄にはならないと思います。

編集 削除
Say  2002-02-27 16:35:04  No: 75342  IP: [192.*.*.*]

WindowHandleはWindowが生成されてから消滅するまでに変化することはありません。
が、ウィンドウキャプションは変化している可能性があります。

編集 削除