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 !


Anmelden zum Antworten