UDF > WinAPIEx > Processes & Synchronization > Processes >


_WinAPI_EnumProcessHandles

Énumère les handles qui appartiennent au processus spécifié

#include <WinAPIProc.au3>
_WinAPI_EnumProcessHandles ( [$iPID = 0 [, $iType = 0]] )

Paramètres

$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.

Valeur de retour

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.

Voir aussi

Consultez ZwQuerySystemInformation dans la librairie MSDN.

Exemple

#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')