デスクトップ上のウィンドウの一覧を取得するには?

解決


となかい丸  2005-10-19 09:54:11  No: 126480

お世話になります。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200510/05100079.txt
で質問したものです。

ウィンドウの非表示処理は完成しました。
次にデスクトップ上にあるウィンドウの一覧(タスクバーに表示されているウィンドウ)
を取得したいです。
EnumWindowを使ってウィンドウの一覧を取得することはできましたが
これだとデスクトップ上にあるウィンドウ以外のウィンドウも取得してしまいます。
IsWindowVisibleを使えばいいのかなと思いやってみましたが、これでも
まだ他のウィンドウが取得されるようです。

デスクトップ上に表示されているウィンドウのみを抽出するには
何を調べたら分かるのでしょうか?

環境はVB6です。

よろしくお願いします。


魔界の仮面弁士  2005-10-19 10:18:13  No: 126481

http://www.msjogren.net/dotnet/eng/samples/vb6_taskbarlist.asp


となかい丸  2005-10-20 03:59:30  No: 126482

回答ありがとうございます。
サンプルをダウンロードし、調べてみると以下のように条件判断しタスクバーに表示されている
ウィンドウを取得していました。

(1)そのウィンドウのウィンドウスタイルにWS_EX_APPWINDOWがセットされている場合
    →タスクバーに表示されているウィンドウ

(2)そのウィンドウのウィンドウスタイルにWS_EX_TOOLWINDOWがセットされていない場合
    (ただし(1)の条件がこの条件より優先される)
    →タスクバーに表示されていないウィンドウ

(3)下記の3条件を満たす場合(ただし(1)、(2)の条件がこの条件より優先される)
      →タスクバーに表示されているウィンドウ

・ウィンドウが可視状態
・そのウィンドウのオーナウィンドウが無い
・親ウィンドウのウィンドウハンドルが0またはデスクトップのウィンドウハンドル

サンプルにも書いてありますが、これが正しいのかどうか分かりませんが今のところ
問題なさそうなので解決とします。
ありがとうございました。


となかい丸  2005-10-20 03:59:43  No: 126483

解決です。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加