Meinen letzten Post beachten!
das Problem mit dem Rückgabewert 0 war meine schuld.
hab folgenden
Code Gefunden, der Die dwProcessId aus einem hProcess bekommt.
Dafür reicht es warscheinlich folgenden Codeschnipsel zu modifizieren:
Delphi-Quellcode:
if not Assigned(FNGetProcessId) then
FNGetProcessId := TFNGetProcessId(
GetProcAddress(GetModuleHandle(kernel32), 'GetProcessId'));
if Assigned(FNGetProcessId) then
Result := FNGetProcessId(Process)
Anstatt "GetProcessId" bestimmt etwas anderes aber was?^^
Zum Testen habe ich folgendes geschreiben:
Delphi-Quellcode:
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
i:integer;
begin
ZeroMemory(@StartInfo, SizeOf(TStartupInfo));
StartInfo.cb := SizeOf(TStartupInfo);
CreateProcess(nil,Pchar('notepad'),nil,nil,False,0,nil,nil,StartInfo,ProcInfo);
sleep(1000);
if OpenProcess(PROCESS_CREATE_PROCESS , false, ProcInfo.dwProcessId)=ProcInfo.hProcess then
showmessage('ok')
else
showmessage('nö');
und es sind unterschiedliche hProcess!