Notre amis MSDN nous informe que:
Le dernier paramètre est probablement celui qui pose problème mais il est optionnel.LRESULT WINAPI SendMessageTimeout(
__in HWND hWnd,
__in UINT Msg,
__in WPARAM wParam,
__in LPARAM lParam,
__in UINT fuFlags,
__in UINT uTimeout,
__out_opt PDWORD_PTR lpdwResult
);
Je n'en ai pas besoin mais si je ne le spécifie pas, autoit plante lamentablement
Voici mon code qui devrait nous donner "true" et non "false" et chez moi, il retourne "false".
Code : Tout sélectionner
Func _IsAppResponding($hWnd, $TimeOut = 1000)
$Dll = DllOpen("user32.dll")
local $lresult
$WM_NULL = 0
$SMTO_BLOCK = 1
$SMTO_ABORTIFHUNG = 2
Local $aResult = DllCall($Dll, "lresult", "SendMessageTimeoutW", "hwnd", $hWnd, "uint", $WM_NULL, "wparam", 0, "lparam", 0, "uint", $SMTO_BLOCK + $SMTO_ABORTIFHUNG, "uint", $TimeOut, "pdword_ptr", $lresult)
$Dll = DllClose ("user32.dll")
If @error Then Return SetError(@error, @extended, "")
If $aResult Then
return "true"
Else
return "false"
EndIf
EndFunc
$hWnd = WinGetHandle("Sans titre - Bloc-notes")
MsgBox(0, default, $hWnd & @CRLF & @error & @CRLF & @extended)
$answer = _IsAppResponding($hWnd, 1000)
MsgBox(0, default, $answer & @CRLF & @error & @CRLF & @extended)Merci pour votre aide !
EDIT: j'ai cru lire autre part que WinGetHandle ratait si l'application ne répond pas, est-ce vrai ?


