Why not just minimize everything and that will show the desktop.
To minimize all Windows:
Code:
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" _
Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As _
Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_COMMAND As Long = &H111
Private Const MIN_ALL As Long = 419
Private Const MIN_ALL_UNDO As Long = 416
Private Sub MinimizeAll()
Dim lngHwnd As Long
lngHwnd = findwindow("Shell_TrayWnd", vbNullString)
Call PostMessage(lngHwnd, WM_COMMAND, MIN_ALL, 0&)
End Sub
Usage
MinimizeAll
To restore all:
Code:
Private Sub RestoreAll()
Dim lngHwnd As Long
lngHwnd = findwindow("Shell_TrayWnd", vbNullString)
Call PostMessage(lngHwnd, WM_COMMAND, MIN_ALL_UNDO, 0&)
End Sub
Usage
RestoreAll
And when you minimize all programs, it minimizes your program as well, here is how to restore just your program:
Code:
Private Sub Restore(frm As Form)
Dim lngHwnd As Long
lngHwnd = frm.hwnd
Call PostMessage(lngHwnd, WM_COMMAND, MIN_ALL_UNDO, 0&)
End Sub
Usage
Restore Me