Gibt ein Handle eines existierenden Prozessobjekts zurück
#include <WinAPIProc.au3>
_WinAPI_OpenProcess ( $iAccess, $bInherit, $iPID [, $bDebugPriv = False] )
$iAccess | Legt den Zugriff auf das Prozessobjekt fest |
$bInherit | Legt fest, ob das zurückgegebene Handle geerbt werden kann |
$iPID | Legt den Identifizierer des zu öffnenden Prozesses fest |
$bDebugPriv | [optional] Bestimmte Systemprozesse können nicht geöffnet werden es sei denn man verfügt über Debug Sicherheits-Privilegien. Falls TRUE, wird die Funktion veranlasst den Prozess mit Debug-Privilegien, sollte der Prozess nicht mit Standard Zugriffs-Privilegien geöffnet werden können. |
Erfolg: | der Prozesshandle zu dem Objekt |
Fehler: | Setzt das @error Flag auf ungleich null |
_WinAPI_CloseHandle, _WinAPI_ReadProcessMemory, _WinAPI_WriteProcessMemory
Suche nach OpenProcess in der MSDN Bibliothek.
#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)