Obtient des informations sur une fenêtre active ou un thread de GUI spécifié
#include <WinAPISysWin.au3>
_WinAPI_GetGUIThreadInfo ( $iThreadId )
$iThreadID | L'identifiant du thread pour lequel les informations doivent être extraites. |
Succès: | Retourne le tableau qui contient les informations suivantes: [0] - L'état du thread. Il peut s'agir d'une ou plusieurs des valeurs $GUI_*. [1] - Le handle de la fenêtre active à l'intérieur du thread. [2] - Le handle de la fenêtre qui a le focus clavier. [3] - Le handle de la fenêtre qui a capturé la souris. [4] - Le handle de la fenêtre qui possède des menus actifs. [5] - Le handle de la fenêtre dans une boucle de déplacement ou de redimensionnement. [6] - Le handle de la fenêtre qui affiche le curseur. [7] - La coordonnée x du coin supérieur gauche du rectangle de délimitation du Caret, en coordonnées client. [8] - La coordonnée y du coin supérieur gauche de rectangle de délimitation du Caret, en coordonnées client. [9] - La largeur de rectangle de délimitation du Caret. [10] - La hauteur du rectangle de délimitation du Caret. |
Échec: | Définit @error <> 0, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur. |
Consultez GetGUIThreadInfo dans la librairie MSDN.
#include <GUIConstantsEx.au3> #include <WinAPISysWin.au3> #include <WindowsConstants.au3> Local $hForm = GUICreate('', 240, 268, 10, 10, BitOR($WS_CAPTION, $WS_POPUP), $WS_EX_TOPMOST) GUICtrlCreateLabel('Thread state:', 20, 18, 90, 14) GUICtrlCreateLabel('Active window:', 20, 40, 90, 14) GUICtrlCreateLabel('Keyboard focus:', 20, 62, 90, 14) GUICtrlCreateLabel('Mouse capture:', 20, 84, 90, 14) GUICtrlCreateLabel('Active menu:', 20, 106, 90, 14) GUICtrlCreateLabel('Move or size loop:', 20, 128, 90, 14) GUICtrlCreateLabel('Caret:', 20, 150, 90, 14) GUICtrlCreateLabel('Left:', 20, 172, 90, 14) GUICtrlCreateLabel('Top:', 20, 194, 90, 14) GUICtrlCreateLabel('Width:', 20, 216, 90, 14) GUICtrlCreateLabel('Height:', 20, 238, 90, 14) Global $a_idInput[11] For $i = 0 To 10 $a_idInput[$i] = GUICtrlCreateLabel('', 114, 18 + 22 * $i, 116, 14) Next GUISetState(@SW_SHOWNOACTIVATE) Local $hWnd, $aInfo, $iPID Do $hWnd = WinGetHandle('[ACTIVE]') $aInfo = _WinAPI_GetGUIThreadInfo(_WinAPI_GetWindowThreadProcessId($hWnd, $iPID)) If Not @error Then WinSetTitle($hForm, '', WinGetTitle($hWnd)) $aInfo[0] = '0x'& Hex($aInfo[0], 8) Else WinSetTitle($hForm, '', '') Dim $aInfo[11] For $i = 0 To 10 $aInfo[$i] = '' Next $hWnd = 0 EndIf For $i = 0 To 10 If StringCompare(GUICtrlRead($a_idInput[$i]), $aInfo[$i]) Then GUICtrlSetData($a_idInput[$i], $aInfo[$i]) EndIf Next Until GUIGetMsg() = $GUI_EVENT_CLOSE