Message bei Klick auf Taskleiste
-
Hallo Leute,
ich möchte die Meldung abfangen, die geschickt wird, wenn der Benutzer das Programm über die Taskleiste (Mausklick mit der linken Taste) minimiert oder wieder in den Vordergrund holt.
Die Meldungen WM_SYSCOMMAND (SC_MINIMIZE & SC_RESTORE) habe ich bereits versucht, aber diese werden nicht geschickt.
Gruß Skay
-
wovon hast du denn diese meldung abfangen? doch nicht etwa vom eigenen programm aus? du müsstest sicherlich versuche ein handle auf das taskleisten-fenster zu bekommen und dann dort die entspr. messages abfangen.
// Handle besorgen HANDLE hTaskbar = FindWindow("Shell_TrayWnd", 0);
-
Ich benötige die Message bei meinem eigenen Programm. Folgendes Problem:
Wenn der Benutzer das Programm über den Minimieren-Button in der Caption minimiert, lasse ich das Programm in der TrayIconBar verschwinden. Klickt der Benutzer jedoch das Programm in der Taskleiste an, so wird die Applikation minimiert aber nicht in die TrayIconBar verschoben.
-
um Messages abzufangen musst du mal nach subclassing suchen.
wenn du aber Messages von einer anderen Applikation abfangen willst, musst du eine DLL machen.mfg
BigNeal
-
okay, ist doch gar nicht so kompliziert wie ich dachte. es ist gar kein abfangen irgendwelcher Messages nötig.
// wird aufgerufen bei OnMinimize void __fastcall TF_Main::DoAppMinimize(TObject* /* Sender */) { // Anwendung verstecken ShowWindow(Application->Handle, SW_HIDE); // TrayIcon anlegen und Ballon-Tip anzeigen AddSysTrayIcon(); ShowBalloonTips(); } // wird aufgerufen bei OnRestore void __fastcall TF_Main::DoAppRestore(TObject* /* Sender */) { // Trayicon entfernen DeleteSysTrayIcon(); // Anwendung zeigen und in Vordergrund holen ShowWindow(Application->Handle, SW_RESTORE); SetForegroundWindow(Application->Handle); } // Konstruktor des Haupt-Formulares void __fastcall TF_Main::FormCreate(TObject* /* Sender */) { Application->OnMinimize = DoAppMinimize; Application->OnRestore = DoAppRestore; }
-
Super, genau das habe ich gesucht, danke !