はじめまして。はじめて質問させていただきます。
ウィンドウハンドル列挙を
コールバックプロシージャEnumWindowにより
取得する事が出来たのですが
タスクにいない?アプリケーションではない
ウィンドウハンドル取得されてしまうのですが
これを判定する方法はあるのですか
ウィンドウキャプションを列挙し選択されたウィンドウ
だけを常に手前に設定する処理を作成しています。
又、最初に取得したハンドルからウィンドウタイトルを取得
ユーザーオペレーションにより選択された時点で
ウィンドウを手前に持ってくるのですが
この時点で先に取得したハンドル値が変わっている
という事はあるのですか?
再度、ウィンドウタイトルからハンドルを取得しにいった方が
良いでしょうか?
宜しくお願いします。
まずひとつめから…
> タスクにいない?アプリケーションではない
> ウィンドウハンドル取得されてしまうのですが
これで十分かどうか…、というか、十分ではないんですけど、
IsWindowVisibleのAPIで、見えるウィンドウだけを列挙すれば、
だいたいアプリケーションのみになります。
ほかにもIsなんとかのAPIはあるので、
くみ合わせればけっこう十分な効果があるかも…。
あとはGetWindowLongとかで、ウィンドウスタイルを取得したり、
いろいろ組み合わせることもできます。
つぎふたつめ…
> この時点で先に取得したハンドル値が変わっている
> という事はあるのですか?
よくわかりませんけど、
よく他の人の作ったサンプルやクラスなどで、
ハンドルをおしえて、あとはなにもしないというものがおおいですよね、
だから多分、変わったりすることはないんじゃないでしょうか?
そのウィンドウが、裏でいったん削除されたりした場合はそうでもないでしょうけど…。
だから念のため、もういちど確認しておいても、無駄にはならないと思います。
WindowHandleはWindowが生成されてから消滅するまでに変化することはありません。
が、ウィンドウキャプションは変化している可能性があります。
ツイート | ![]() |