Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" ( _
ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) As Long
Private Declare Function SetParent Lib "user32" ( _
ByVal hWndChild As Long, _
ByVal hWndNewParent As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, _
ByVal wFlags As Long) As Long
Private Const LVBKIF_SOURCE_NONE = &H0
Private Const LVM_SETBKIMAGEA = (LVM_FIRST + 68)
Private Const LVM_SETBKIMAGE = LVM_SETBKIMAGEA
Private Const LVM_FIRST As Long = &H1000
Private Const LVM_SETBKCOLOR = (LVM_FIRST + 1)
Private Const CLR_NONE = &HFFFFFFFF
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const HWND_BOTTOM = 1
Private Type LVBKIMAGE
uFlags As Long
hBmp As Long
pszImage As String
cchImageMax As Long
xOffsetPercent As Long
yOffsetPercent As Long
End Type
Private lhWnd As Long, lhWndLV As Long
Private Sub Command1_Click()
lhWndLV = FindWindowEx(lhWnd, 0&, "SysListView32", vbNullString)
SetParent Me.hwnd, lhWnd
SetParent lhWndLV, Me.hwnd
' This line will place the controls on the form above the desktop icons
' SetWindowPos lhWndLV, HWND_BOTTOM, 0&, 0&, 0&, 0&, SWP_NOMOVE Or SWP_NOSIZE
' Trying to clear background - can't get it to work!
' Dim BKIMG As LVBKIMAGE
' BKIMG.uFlags = LVBKIF_SOURCE_NONE
' Call SendMessage(lhWndLV, LVM_SETBKCOLOR, 0&, ByVal CLR_NONE)
' Call SendMessage(lhWndLV, LVM_SETBKIMAGE, 0&, BKIMG)
' ----------------------
End Sub
Private Sub Form_Load()
lhWnd = FindWindow("Progman", vbNullString)
lhWnd = FindWindowEx(lhWnd, 0&, "SHELLDLL_DefView", vbNullString)
End Sub
Private Sub Form_Unload(Cancel As Integer)
SetParent lhWndLV, lhWnd
End Sub