Option Explicit
#If Win64 Then
Declare PtrSafe Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Declare PtrSafe Sub ClientToScreen Lib "user32" _
(ByVal hwnd As Long, lpPoint As POINT)
Declare PtrSafe Sub mouse_event Lib "user32" _
(ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, _
ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Declare PtrSafe Function SetCursorPos Lib "user32" _
(ByVal x As Long, ByVal y As Long) As Long
#Else
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Declare PtrSafe Sub ClientToScreen Lib "user32" _
(ByVal hwnd As Long, lpPoint As POINT)
Declare Sub mouse_event Lib "user32" _
(ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, _
ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Declare Function SetCursorPos Lib "user32" _
(ByVal x As Long, ByVal y As Long) As Long
#End If
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Type POINT
x As Long
y As Long
End Type
Sub ApplicationPremierPlan()
Dim wWinRar As Long, wNotepad As Long, hwnd As Long
Dim Zone As RECT, Pos As POINT
'on ouvre WinRar
wWinRar = Shell("C:\Program Files\WinRAR\WinRAR.exe", vbNormalFocus)
Sleep 200
'on ouvre Notepad=>Notepad est au 1er plan
wNotepad = Shell("C:\Windows\System32\notepad.exe", vbNormalFocus)
Sleep 200
'on recherche le handle de la fenêtre WinRar affichée au second plan
hwnd = FindWindow("WinRarWindow", vbNullString)
Sleep 200
Pos.x = Zone.Left
Pos.y = Zone.Top
ClientToScreen hwnd, Pos
SetCursorPos Pos.x, Pos.y
mouse_event MOUSEEVENTF_LEFTDOWN + MOUSEEVENTF_LEFTUP, Pos.x, Pos.y, 0, 0
End Sub