デスクトップ上の全てのウィンドウを非表示にするには?

解決


たま  2003-08-08 06:06:03  No: 108008

FindWindowで検索してShowWindowで非表示にすることはできたのですが、FindWindowで指定した特定のウィンドウだけしか非表示にできません。
デスクトップ上に見えているウィンドウ全てを取得するにはどうしたらよいのでしょうか?


たかみちえ  URL  2003-08-08 07:03:46  No: 108009

シェルがエクスプローラの場合のみを考慮する場合は、
Win+Mキー(だったっけ?)を送るだけでもいいでしょう。
(どうせい他のシェルでも、別にこのホットキーが登録されてることが多いでしょうし)

  ちゃんとやるならば、EnumWindowsとかを使ったりして、
一個ずつ、"アイコン状態(最小化)じゃなかったら最小化"するなりしたほうが確実です。


魔界の仮面弁士  2003-08-08 10:28:12  No: 108010

Win+Mだと、『最小化ができないウィンドウ』が残ってしまうので、
この場合は、Win+Dの方が適切かもしれません。

Win+Dであれば、モーダルウィンドウを表示しているウィンドウなども
まとめて非表示にする事ができますよ。

Private Sub Command1_Click()
    MsgBox "全て最小化(Win + M)", vbSystemModal
    CreateObject("Shell.Application").MinimizeAll
End Sub

Private Sub Command2_Click()
    MsgBox "全て復元(Shift + Win + M)", vbSystemModal
    CreateObject("Shell.Application").UndoMinimizeALL
End Sub

Private Sub Command3_Click()
    MsgBox "デスクトップの表示(Win + D)", vbSystemModal
    CreateObject("Shell.Application").ToggleDesktop
End Sub


たま  2003-08-12 06:35:23  No: 108011

ありがとうございました、EnumWindowsとIsWindowVisibleを組み合わせて
表示されているウィンドウのハンドルを取得してからShowWindowで
全表示ウィンドウを非表示にすることが出来ました。


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

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






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