FindWindowで検索してShowWindowで非表示にすることはできたのですが、FindWindowで指定した特定のウィンドウだけしか非表示にできません。
デスクトップ上に見えているウィンドウ全てを取得するにはどうしたらよいのでしょうか?
シェルがエクスプローラの場合のみを考慮する場合は、
Win+Mキー(だったっけ?)を送るだけでもいいでしょう。
(どうせい他のシェルでも、別にこのホットキーが登録されてることが多いでしょうし)
ちゃんとやるならば、EnumWindowsとかを使ったりして、
一個ずつ、"アイコン状態(最小化)じゃなかったら最小化"するなりしたほうが確実です。
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
ありがとうございました、EnumWindowsとIsWindowVisibleを組み合わせて
表示されているウィンドウのハンドルを取得してからShowWindowで
全表示ウィンドウを非表示にすることが出来ました。
ツイート | ![]() |