Messages eines anderen Programmes einsehen
-
Hallo ich hab ein Problem bei dem ich Hilfe benötige:
Ich möchte ein Programm (soll nur in der Kommandokonsole laufen) schreiben, das jedesmal wenn eine bestimmte Windows Anwendung den Fokus bekommt, eine Meldung ausgibt. Das Handle dieses Fenster, das überwacht werden soll ist bekannt. Wie kann ich das machen? Ich habs bisher auf diese Art probiert aber es passiert nichts:LRESULT CALLBACK WndProc(HWND hWnd, unsigned int message, WPARAM wParam, LPARAM lParam) { switch( message) { case WM_SETFOCUS: cout << "Hallo" << '\n'; break; default: return DefWindowProc(hWnd,message,wParam,lParam); } return 0; } int main(int argc, char *argv[]) { ... MSG msg; while(GetMessage(&msg, fensterhwnd, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } system("PAUSE"); return EXIT_SUCCESS; }Mfg Felsen
-
Du könntest einen Hook etablieren, such mal hier im Forum nach SetWindowsHookEx.
edit: WndProcs erhalten nur Nachrichten für das Fenster, für das sie registriert worden sind.
Eventuell klappt es auch, wenn du bei dem Fenster, das du überwachen willst, die originale WinProc holst (GetWindowLong(wnd,GWL_WNDPROC)), deine eigene reinschreibst (SetWindowLong(wnd,GWL_WNDPROC,...)) und für jede empfangene Nachricht CallWndProc(...) mit der Original-WndProc aufrufst.
-
Gehört das nicht ins Win-API Forum?
-
Speedy_92 schrieb:
Gehört das nicht ins Win-API Forum?
Nein, Windows ist doch das Maß aller Dinge...

@Topic: Geht das nicht auch mit Pipes?