UDF > WinAPIEx > Processes & Synchronization > Processes >


_WinAPI_OpenProcess

Obtient le handle d'un objet de processus existant

#include <WinAPIProc.au3>
_WinAPI_OpenProcess ( $iAccess, $bInherit, $iPID [, $bDebugPriv = False] )

Paramètres

$iAccess Indique l'accès à l'objet de processus
$bInherit Indique si le handle retourné peut être héritée
$iPID Indique l'identifiant du processus doit être ouvert
$bDebugPriv [optionnel] Certains processus système ne peuvent être ouverts que si vous avez le privilège de sécurité de débogage.
Si True, la fonction tentera d'ouvrir le processus avec des privilèges de débogage si le processus ne peut pas être ouvert avec les privilèges d'accès standard.

Valeur de retour

Succès: Retourne le handle de l'objet processus.
Échec: Définit @error <> 0.

En relation

_WinAPI_CloseHandle, _WinAPI_ReadProcessMemory, _WinAPI_WriteProcessMemory

Voir aussi

Consultez OpenProcess dans la librairie MSDN.

Exemple

#include <ProcessConstants.au3>
#include <WinAPIHObj.au3>
#include <WinAPIProc.au3>
#include <WinAPISys.au3>

; _WinAPI_CreateProcess() will be the best solution
Local $iPID = Run('cmd.exe /k')
If Not $iPID Then
    Exit
EndIf

; Note, immediately open the process
Local $hProcess
If Number(_WinAPI_GetVersion()) >= 6.0 Then
    $hProcess = _WinAPI_OpenProcess($PROCESS_QUERY_LIMITED_INFORMATION, 0, $iPID)
Else
    $hProcess = _WinAPI_OpenProcess($PROCESS_QUERY_INFORMATION, 0, $iPID)
EndIf
If Not $hProcess Then
    Exit
EndIf

; Wait until the process exists, try enter "exit 6"
While ProcessExists($iPID)
    Sleep(100)
WEnd

ConsoleWrite('Exit code: ' & _WinAPI_GetExitCodeProcess($hProcess) & @CRLF)

_WinAPI_CloseHandle($hProcess)