![]() |
hProcess aus dwProcessId bekommen?
Hi,
ich würde gerne wissen wie ich den hProcess aus einer dwProcessId bekomme? Hab schon nen bissel gesucht aber bis jetzt läuft das nicht ganz so :/
Delphi-Quellcode:
Ich bekomme immer den Rückgabewert 0.
hProcess:=OpenProcess(PROCESS_QUERY_INFORMATION, true, dwProcessId);
Liegt es vlt an Vista? mfg gandime |
Re: hProcess aus dwProcessId bekommen?
Welches Betriebssystem? Was sagt
![]() |
Re: hProcess aus dwProcessId bekommen?
oh ich hatte dwProcessId ausversehen nicht zugewiesen^^
aber trotzdem bekomme ich nicht den richtigen hProcess den ich möchte^^
Delphi-Quellcode:
Diesen ProcInfo.hProcess hätte ich gerne.
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); Aber von einem bereits gestarteten Process! |
Re: hProcess aus dwProcessId bekommen?
Zitat:
Kann es sein, dass es sich um einen Systemprozess oder einen anderen unter einem anderen Benutzerkonto ausgeführten Prozess handelt? ;-) Das von Luckie angesprochene GetLastError wird in dem Fall den Fehler 5 zurückgeben: "Zugriff verweigert"
Delphi-Quellcode:
// EDIT:
ShowMessage('Fehler ' + IntToStr(GetLastError) + ': ' + SysErrorMessage(GetLastError));
Die Benachrichtigung über Antworten geht wohl irgendwie nicht richtig. Die Antwort habe ich nicht gesehen bei der Antwort. Zitat:
|
Re: hProcess aus dwProcessId bekommen?
Meinen letzten Post beachten!
das Problem mit dem Rückgabewert 0 war meine schuld. hab folgenden ![]() Dafür reicht es warscheinlich folgenden Codeschnipsel zu modifizieren:
Delphi-Quellcode:
Anstatt "GetProcessId" bestimmt etwas anderes aber was?^^
if not Assigned(FNGetProcessId) then
FNGetProcessId := TFNGetProcessId( GetProcAddress(GetModuleHandle(kernel32), 'GetProcessId')); if Assigned(FNGetProcessId) then Result := FNGetProcessId(Process) Zum Testen habe ich folgendes geschreiben:
Delphi-Quellcode:
und es sind unterschiedliche hProcess!
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ö'); |
Re: hProcess aus dwProcessId bekommen?
Zitat:
Zitat:
Das kannst du durch wiederholten Aufruf von OpenProcess ja auch ausprobieren, du bekommst verschiedene weitere Handles. Und du kannst mit diesen verschiedenen Handles trotzdem z.B. die Priorität des selben Prozesses verändern. |
Re: hProcess aus dwProcessId bekommen?
Was willst du denn eigentlich mit dem Prozesshandle machen und warum nimmst du gerade PROCESS_CREATE_PROCESS als Zugriffsrecht?
|
Re: hProcess aus dwProcessId bekommen?
ich weiss auch nicht warum es nicht funktioniert hat aber ich konnte CreateRemoteThread() nicht mit dem HProcess aufrufen Oo
jetzt funktioniert es aber wunderbar danke |
Re: hProcess aus dwProcessId bekommen?
Zitat:
Du brauchst aber mehrere Rechte, diese stehen in der ![]() Zitat:
|
Re: hProcess aus dwProcessId bekommen?
Delphi-Quellcode:
hWnd, dwPid,
hProcess: Cardinal; begin hWnd := FindWindow('Notepad', 0); if hWnd <> 0 then begin GetWindowThreadProcessID( hWnd, dwPid ); if dwPid <> 0 then begin hProcess := OpenProcess( PROCESS_ALL_ACCESS, False, dwPid ); if hProcess <> 0 then begin // code end else // Errorbehandlung end else // Errorbehandlung end else // Errorbehandlung end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz