Get running process übergebene Prozesskennung

9

kann mir jemand sagen, wie ich einen laufenden Prozess in c # mit der Prozessklasse erfassen kann, wenn ich das Handle bereits kenne?

Id muss die Methode "trunning proces" entweder nicht aufzählen. pInvoke ist in Ordnung wenn möglich.

    
Grant 14.08.2009, 08:11
quelle

4 Antworten

9

In normalem C # sieht es so aus, als müssten Sie alle durchlaufen:

%Vor%

Das obige Beispiel schlägt absichtlich fehl, wenn das Handle nicht gefunden wird. Andernfalls könnten Sie natürlich SingleOrDefault verwenden. Anscheinend mag es nicht, dass Sie das Handle der Prozess-ID 0 anfordern, daher die zusätzliche Bedingung.

Mit WINAPI können Sie GetProcessId verwenden. Ich konnte es nicht auf pinvoke.net finden, aber das sollte tun:

%Vor%

(Signatur verwendet DWORD , Prozess-IDs werden jedoch von int s in der .NET-BCL dargestellt)

Es scheint ein bisschen merkwürdig, dass Sie einen Punkt haben, aber keine Prozess-ID. Prozesshandles werden durch Aufrufen von OpenProcess erworben, was einen Prozess erfordert ID.

    
Thorarin 14.08.2009, 08:16
quelle
3
%Vor%     
RaYell 14.08.2009 08:18
quelle
2

Es scheint keine einfache Möglichkeit zu geben, dies mit der .Net API zu tun. Die Frage ist, woher hast du diesen Griff? Wenn Sie auf dieselbe Weise auf die Prozess-ID zugreifen können, können Sie Folgendes verwenden:

Process.GetProcessById (int iD)

    
Frank Bollack 14.08.2009 08:19
quelle
1

Sie könnten den GetWindowThreadProcessId-WinAPI-Aufruf

verwenden

Ссылка

Um die Prozess-ID zu erhalten, rufen Sie dann ein Prozess-Objekt auf, das ..... verwendet.

Aber warum wollen Sie die IDs der laufenden Prozesse nicht aufzählen?

    
Adrian 14.08.2009 08:26
quelle

Tags und Links