Énumère les handles qui appartiennent au processus spécifié
#include <WinAPIProc.au3>
_WinAPI_EnumProcessHandles ( [$iPID = 0 [, $iType = 0]] )
$iPID | [optionnel] Le PID du processus. Par défaut, (0) est le processus actuel. |
$iType | [optionnel] La valeur associée au type d'objets à énumérer. Cette valeur dépend du système d'exploitation. Si ce paramètre est 0 (par défaut), tous les handles du processus spécifié seront énumérés. |
Succès: | Retourne le tableau 2D contenant les informations suivantes: [0][0] - Nombre de lignes dans le tableau (n) [0][1] - Inutilisé [n][0] - Handle [n][1] - Type (dépend du système d'exploitation) [n][2] - Attributs [n][3] - Accès |
Échec: | Définit @error <> 0, @extended peut contenir le code d'erreur NTSTATUS. |
Consultez ZwQuerySystemInformation dans la librairie MSDN.
#include <Array.au3> #include <ProcessConstants.au3> #include <WinAPIHObj.au3> #include <WinAPIProc.au3> Global Const $PID = @AutoItPID Local $hSource, $hTarget, $hObject Local $aData = _WinAPI_EnumProcessHandles($PID) If IsArray($aData) Then $hTarget = _WinAPI_GetCurrentProcess() $hSource = _WinAPI_OpenProcess($PROCESS_DUP_HANDLE, 0, $PID) If $hSource Then For $i = 1 To $aData[0][0] $hObject = _WinAPI_DuplicateHandle($hSource, $aData[$i][0], $hTarget, 0, 0, 2) If Not @error Then $aData[$i][1] = _WinAPI_GetObjectNameByHandle($hObject) _WinAPI_CloseHandle($hObject) EndIf Next EndIf EndIf _ArrayDisplay($aData, '_WinAPI_EnumProcessHandles')