Obtient le handle d'un objet de processus existant
#include <WinAPIProc.au3>
_WinAPI_OpenProcess ( $iAccess, $bInherit, $iPID [, $bDebugPriv = False] )
$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. |
Succès: | Retourne le handle de l'objet processus. |
Échec: | Définit @error <> 0. |
_WinAPI_CloseHandle, _WinAPI_ReadProcessMemory, _WinAPI_WriteProcessMemory
Consultez OpenProcess dans la librairie MSDN.
#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)