Returns a handle of an existing process object
#include <WinAPIProc.au3>
_WinAPI_OpenProcess ( $iAccess, $bInherit, $iPID [, $bDebugPriv = False] )
$iAccess | Specifies the access to the process object |
$bInherit | Specifies whether the returned handle can be inherited |
$iPID | Specifies the process identifier of the process to open |
$bDebugPriv | [optional] Certain system processes can not be opened unless you have the debug security privilege. If True, this function will attempt to open the process with debug privileges if the process can not be opened with standard access privileges. |
Success: | the process handle to the object. |
Failure: | sets the @error flag to non-zero. |
_WinAPI_CloseHandle, _WinAPI_ReadProcessMemory, _WinAPI_WriteProcessMemory
Search OpenProcess in MSDN Library.
#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)