Hallo,
unter Win10x64 kann ich einen 32bit Process "cmd.exe" problemlos starten und beenden.
Einen 64bit Process "explorer.exe" kann ich zwar starten aber nicht beenden.
wfso liefert beim 64bit sofort ein WAIT_OBJECT_O zurück.
Wenn ich in diesem Fall dann zu Fuß warte und dann terminateProcess versuche, gibts ein "
access denied"
Kann es sein, daß "processInfo.hProcess" gar nicht auf den gestarteten Explorer zeigt?
Oder ist es wirklich ein Rechteproblem?
Auszug aus dem Code (BDS2006)
Delphi-Quellcode:
....
ChangeFSRedirection( true );
if createProcess(
nil,
pchar( prg ),
nil,
nil,
false,
NORMAL_PRIORITY_CLASS,
nil,
pchar( verz ),
startupInfo,
processInfo
) then begin
ChangeFSRedirection( false );
wfsoCode := waitForSingleObject( processInfo.hProcess, timeout * 1000 );
if wfsoCode = Wait_TimeOut then begin
terminateProcess( processInfo.hProcess, exitCode );
end;
if wfsoCode = WAIT_OBJECT_0 then begin
if ProcessInfo.dwProcessId > 0 then begin
xWait := timeOut;
while xWait > 0 do begin
sleep( 1000 );
xWait := xWait -1;
end;
terminateProcess( processInfo.hProcess, exitCode );
end;
end;
...
Erfahrung ist etwas, daß man erst bekommt, kurz nachdem man es dringend gebraucht hätte.