Warum wird die CALLBACK Funktion nicht aufgerufen?
-
Salute zusammen.
Ich habe die ProzessID - pe.th32ProcessID - eines Prozesses zur Verfügung, und benötige das Window-Handle (Der Prozess hat nur 1 Fenster!).
Darum rufe ich die WinApi Funktion ::EnumThreadWindows auf.
Eine dazugehörige CALLBACK Funktion (EnumThreadWndProc) habe ich auch, jedoch wird diese nicht aufgerufen. warum?if (stricmp(pe.szExeFile, ProcessName) == 0) { ::EnumThreadWindows(pe.th32ProcessID, EnumThreadWndProc, NULL); //HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE, FALSE, pe.th32ProcessID ); }BOOL CALLBACK EnumThreadWndProc(HWND hwnd, LPARAM lParam) { char WindowTitle[1024]; ::GetWindowText(hwnd, (LPSTR)WindowTitle, 1024); printf("%s", WindowTitle); return TRUE; }Gruss
-
Sieht Spy++ dieses Fenster?
Was gibt EnumThreadWindows zurück? FALSE, dann findet es kein Fenster.Bist Du sicher, dss es kein Child Window ist, dann würde EnumThreadWindows nicht greifen.
-
Jup, UISpy sowie Spy++ sehen das Fenster.
EnumThreadWindows gibt TRUE zurück + es ist das Hauptfenster des Prozesses.
-
Dann bleibt die Frage was Du als Eingabeparameter verwendest.
ift th32ProcessID wirlich eine Thread Id oder ene prozess ID?Wenn Dein Eintrag aus PROCESSENTRY32 stammt ist das falsch!
Das ist keine Thread ID!