Prozess-ID eines Tasks ermitteln Verfasst am: 22.03.2008, 20:57
Ich möchte anhand des Tasknamens die Task-ID des dazugehörigen Prozesses ermitteln.
Hatte mal einen Code dazu, finde ihn aber leider nicht mehr.
Kann mir einer von euch weiterhelfen? Wisst ihr wie das geht?
c0re
Viktor « Webmaster »
Anmeldedatum: 08.12.2006 Beiträge: 354 Wohnort: Berlin
Verfasst am: 22.03.2008, 21:33
Du holst dir das Handle per FindWindow() bzw. FindwindowEx() und benutzt darauf dann die Funktion GetWindowThreadProcessId().
Die Funktion erwartet 1. handle und 2. eine Variable zur Speicherung der ID.
Hier in C++ hab ichs schnell geschrieben, ist angenehmer auf das Suchen der API-Deklerationen zu verzichten.
Das Programm liest die ProzessID von Winamp aus.
Ich versuchs mal in VB umzusetzen :
Code:
#include <iostream>
#include <windows.h>
using namespace std;
int main(){
HWND hWnd;
hWnd = FindWindow("BaseWindow_RootWnd", "Main Window");
Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Declare Function GetWindowThreadProcessId Lib "user32.dll" _
(ByVal hWnd As Long, _
lpdwProcessId As Long) As Long
Sub main()
Dim hWnd As Long
hWnd = FindWindow("BaseWindow_RootWnd", "Main Window")
Dim pid As Long
GetWindowThreadProcessId hWnd, pid
MsgBox pid
End Sub
Die Parameter für FindWindow() sind 1. Klasse und 2. Fenstertitel.
Du brauchst aber nur eins von beiden anzugeben.
Die Werte dafür bekommst du z.B. mit dem Tool spy++, welches bei Visual Studio dabei ist.