Problem mit OpenProcess!

napstermania

Mitglied
Hey habe hier ein kleines problem bei dem ich nicht weiter komme! Ich möchte einen laufenden Prozess öffnen um ihn zu überwachen bzw. werte zu prüfen!
Woran kann es liegen das ich den Prozess nicht öffnen kann? Meine BS ausgabe lautet immer "Prozess nicht geöffnet"!

Brauche ich evtl. noch einen bestimmten linker oder compiler command wie ("/MT oder /MD bei threads")

Code:
int _tmain(int argc, _TCHAR* argv[])
{
        HWND hwnd=FindWindow(NULL,("MeinProgramm"));
        DWORD pID = GetWindowThreadProcessId(hwnd,NULL);
        printf("Prozess ID = %d\n", pID);
	HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION,FALSE, pID);
	if (hProcess) 
                printf("Prozess geöffnet!\n");
	else
		printf("Prozess nicht geöffnet!\n");
        CloseHandle( hProcess );
	return 0;
}

Danke schonmal im vorraus!
 
Hi.

Wie in der Doku für die Funktion OpenProcess beim MSDN steht, sollte man GetLastError() aufrufen um nähere Informationen zu bekommen. Ich würde mal vermuten es ist ein Berechtigungsproblem.

Gruß
 
Also wenn ich GetLastError direkt nach dem Befehl OpenProcess aufrufe bekomme ich den Wert 87

Wenn ich ihn allerdings nach dem ermitteln der ProzessID aufrufe bekomme ich den wert 2

Wo kann ich mich über diese werte schlau machen was sie zu bedeuten haben! Oder kannst du mir das vielleicht erklären?
 
Du kannst dir von Windows eine Fehlermeldung für den aufgetretenen Fehler anzeigen lassen - siehe http://msdn.microsoft.com/library/d...debug/base/retrieving_the_last_error_code.asp

Die Fehlercodes stehen aber auch in der winerror.h Datei und natürlich sind die auch im Internet zu finden: http://www.apl2000.com/learning/elibrary/source/disk14_toc70852810.htm

Der Errorcode 87 bedeutet in dem Fall "invalid parameter". D.h. vermutlich war die pID nicht gültig.

Du solltest natürlich sicherstellen, das du auch ein gültiges Handle vom Fenster bekommen hast. Du Funktion FindWindow gibt NULL zurück falls kein Fenster gefunden wurde (siehe http://msdn.microsoft.com/library/d...indowreference/windowfunctions/findwindow.asp).

Gruß
 
Zurück