Announcement

Collapse
No announcement yet.

Nachricht über tray icon

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Nachricht über tray icon

    Hallo,

    es gibt bei Windows eine Möglichkeit für ein Paar Sekunden über dem tray Icon eine Nachricht anzuzeigen. Weiss mit welcher API-Funktion man das machen kann ?

    Gruss
    Sebastian

  • #2
    Ist das Programm im Tray dein Programm?? D.h. hast du den Quellcode??

    Oder ein beliebiges Programm??

    Willst du den Hint bestimmen??

    Mögliche Lösungen:

    Das OnHint Ereignis des Programmes im Tray auslösen.

    Dem Programm im Tray eine Nachricht senden, dass es den Hint anzeig
    Christian

    Comment


    • #3
      es ist schon mein program. Aber der Hint das ist doch die Nachricht wenn man mit der Maus drüber fährt, oder

      Comment


      • #4
        j
        Christian

        Comment


        • #5
          Standardmäßig wird dort die Caption des Forms (oder der App, bin nicht sicher) angezeigt.

          Schau Dir mal NOTIFYICONDATA (MS SDK) und dort szTip an.

          Joche

          Comment


          • #6
            Christian, mit welcher nachricht kann man das programm dazu bringen den hint anzuzeigen

            Comment


            • #7
              Hier der Source, mit dem ich in einem meiner Programme das Tray-Icon erzeuge:
              <PRE>
              void __fastcall TForm_LocalDispoServer::AddIcon(void)
              {
              NOTIFYICONDATA IconData;
              IconData.cbSize = sizeof(NOTIFYICONDATA);
              IconData.uID = IDC_TRAY1;
              IconData.hWnd = Handle;
              IconData.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
              IconData.uCallbackMessage = WM_TRAYNOTIFY;
              lstrcpy(IconData.szTip, HINT_MESSAGE); // hier das übergeben was als Hint angezeigt werden soll
              IconData.hIcon = TrayIcon->Handle;
              Shell_NotifyIcon(NIM_ADD, &IconData);
              Application->ProcessMessages();
              }
              </PRE>
              Grüße

              Joche

              Comment


              • #8
                In deinem Programm im Tray einen Routine für OnHint einbauen.

                Bsp:

                Application->OnShowHint=DoShowHint;

                In der Routine DoShowHint wird das gemacht, was bei der Anzeige des Hints passieren soll:
                <pre>
                void __fastcall TWingrep:oShowHint(System::AnsiString &HintStr, bool &CanShow, THintInfo &HintInfo)
                {
                if(HintInfo.HintControl==GRErgebnis) //Prüfen, ob das gewünschte Element der Auslöser war
                {
                //mache was
                }
                CanShow=true;//Hint anzeigen
                }
                //---------------------------------------------------------------------------

                </pre>
                Die Routine kannst du dann auch von außerhalb ggf. über eine Messsage anspringe
                Christian

                Comment


                • #9
                  Das ist aber nicht genau das was ich will, ich will nicht das onHint Ereignis umlenken, sondern den Text, der im Hint steht, auf kommando anzeigen.

                  Ich habe mir auch eine Alternativlösung überlegt, und zwar ich mache ein kleines Form ohne Rahmen und ohne der Windows-Leiste, und lasse es für kurze Zeit an dieser Stelle einblenden

                  Comment


                  • #10
                    naja, die Routine hat

                    CanShow=true;//Hint anzeigen

                    Durch Aufruf sollte eine Anzeige erfolge
                    Christian

                    Comment


                    • #11
                      Christian, diese Routine funktioniert nicht

                      Comment


                      • #12
                        Hallo Sebastian,

                        nachdem ich Dein Problem dann endlich verstanden hatte, hab' ich da eben noch ein bißchen rumprobiert. Leider erfolglos. Ich würd's in dem Fall auch über ein eigenes Form machen... Oder bösartigerweise die Maus auf dem Icon plazieren und dort festhalten, bis der Hint angezeigt wird.

                        Grüße

                        Joche

                        Comment


                        • #13
                          Ich habs auch so gemacht mit eigenem Form, klappt wunderbar. Es ist im prinzip eine Benachrichtigung für den Anwender, dass etwas geschehen ist, so wie man es z.B. von den Firewalls kennt, die z.B. darüber informieren, dass gerade ein Programm abgblockt wurde

                          Comment


                          • #14
                            Wenns klappt ist fein, bei mir wie sagt die Jugend -> funzt das andere auch

                            :-)
                            Christian

                            Comment


                            • #15
                              Hallo nochmal,

                              ich hab' das Beispiel von Christian auch hinbekommen. Allerdings bekomme ich die Nachricht nur angezeigt, wenn ich eine entsprechende Control verwende (z.B. mit TButton). Ich muß den Button anklicken, sonst erscheint die Nachricht nicht...

                              Grüße

                              Joche

                              Comment

                              Working...
                              X