Fensternachricht einer Konsole auffangen
-
Hi,
ich habe eine Konsolenanwendung und möchte von dieser nun die Fensternachricht auffangen, dabei dachte ich an folgendes:
int _tmain (int argc, const TCHAR* argv[]) { MSG msg; while (GetMessage (&msg, NULL,0,0)) { TranslateMessage (&msg); DispatchMessage( &msg); if (msg.message == WM_QUIT || msg.message == WM_CLOSE || msg.message == WM_DESTROY) MessageBox (NULL, _T ("Fenster geschlossen!"), _T (""), MB_OK); } return msg.lParam; }Hat jemand eine Idee wie ich ´dies realisieren kann? Es geht speziell nur um die Konsole!
-
Hat jemand eine Idee wie ich ´dies realisieren kann?
int _tmain (int argc, const TCHAR* argv[]) { MSG msg; while (GetMessage (&msg, NULL,0,0)) { TranslateMessage (&msg); DispatchMessage( &msg); if (msg.message == WM_QUIT || msg.message == WM_CLOSE || msg.message == WM_DESTROY) MessageBox (NULL, _T ("Fenster geschlossen!"), _T (""), MB_OK); } return msg.lParam; }
-
Du Hornochse! Was soll der Quatsch? Nen Code von dem Fragenden kopieren und ohne Änderungen wieder einfügen und sagen "so:" kann ich auch! Das hilft mir nicht weiter.
-
Warum willst Du die Fensternachricht abfangen??? Du hast kein Fenster sondern eine Console!!!
Sag lieber was Du eigentlich willst! Das beenden mitbekommen? Dann verwende
"SetConsoleCtrlHandler"!
-
Konsolen User schrieb:
Du Hornochse! Was soll der Quatsch? Nen Code von dem Fragenden kopieren und ohne Änderungen wieder einfügen und sagen "so:" kann ich auch! Das hilft mir nicht weiter.
Funktioniert denn dein Code nicht??
-
so: schrieb:
Konsolen User schrieb:
Du Hornochse! Was soll der Quatsch? Nen Code von dem Fragenden kopieren und ohne Änderungen wieder einfügen und sagen "so:" kann ich auch! Das hilft mir nicht weiter.
Funktioniert denn dein Code nicht??
Natürlich nicht!!
@Jochen Kalmbach
Eine Konsole ist auch nur in einem Fenster und von diesem Fenster möchte ich halt alle Events mitbekommen, sei es ein WM_SIZE beim Minimieren oder wiederherstellen, ein WM_MOVE usw.
-
Eine COnsole ist ein Fenster, welches von einem System-Prozess verwaltet wird. Somit ist es kein *normales* Fenster...
-
Aber ich kann doch z. B. das HWND davon bekommen, darauf rumkritzeln, Buttons platzieren usw. Gut, der Sinn sei mal dahin gestellt. Aber sogesehen ist es doch auch nur ein Fenster? Wenn ich mich richtig erinnere ist unter windows alles erstmal nur eine Fensterklasse, welche auch Fensterprozeduren haben können. Oder irre ich mich da?
Wenn dem doch so ist: Müsste ich doch darauf zugreifen können, wie z. B. von der auf Word oder jedem anderen Programm.
-
Dein obiger Code kann nicht funktionieren weil laut MSDN:
GetMessage does not retrieve messages for windows that belong to other threads or applications.
Dann hol dir doch das HWND des Fenster und Subclasse das Fenster, oder sollte das auch nicht funzen

schirrmie
-
schirrmie schrieb:
Dann hol dir doch das HWND des Fenster und Subclasse das Fenster, oder sollte das auch nicht funzen

Dein Prozess läuft nicht im gleichen Umfeld wie der Thread, welcher das Fenster erzeugt hat! Du könntest Dich nantürlich in den csrss-Prozess einschleusen, dann geht es.
-
Mist hab die MSDN vorhin nur überflogen und folgendes nicht gesehen
The SetWindowLong function fails if the window specified by the hWnd parameter does not belong to the same process as the calling thread.
Also war meine skepzis berechtigt

Wie sieht es aus mit Hooks?schirrmie