Announcement

Collapse
No announcement yet.

Programm direkt links neben der Uhr

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

  • Programm direkt links neben der Uhr

    Ich verwende Delphi 4. Ich habe ein Programm, welches im Hintergrund läuft.
    Das Programm soll nicht in der Taskbar als normales Icon auftauchen, sondern in der Taskbar direkt links neben der Uhr (wie diverse Treiber).
    In der der Delphi-Hilfe habe ich auf die Schnelle nichts finden können.
    Das muß doch schon mal jemand gemacht haben. Für Hinweise (oder Beispielprogramm) wäre ich dankbar.

  • #2
    Du meinst offensichtlich den Tray. Dazu gibt es eine Komponente auf dem Delphi Super Page namens cooltray.zip. die erledigt alles und noch mehr

    Comment


    • #3
      Hi!<p>
      Als richtiger harter Delphi-Feak (?) willst du sicher den Weg über die API ohne eine Delphi-Komponente gehen, oder?<p>
      Du musst für diese Aufgabe die API-Routine <b>Shell_NotifyIcon</b> verwenden, die in der Unit ShellApi (Achtung: uses !) deklariert ist. Hier kommt ein Programm-Beispiel:<p>
      <pre>
      unit Unit1;

      interface

      uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ShellApi;

      const
      WM_TRAYMSG = WM_USER + 99; // User-Message für Tray

      type
      TForm1 = class(TForm)
      procedure FormCreate(Sender: TObject);
      procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
      { Private-Deklarationen }
      notiTray: TNotifyIconData;
      procedure TrayMessage(var Message: TMessage); message WM_TRAYMSG;
      public
      { Public-Deklarationen }
      end;

      var
      Form1: TForm1;

      implementation

      {$R *.DFM}

      procedure TForm1.FormCreate(Sender: TObject);
      begin
      // NotifyIconData-Struktur installieren...
      with notiTray do begin
      cbSize := SizeOf(notiTray); // Größe der Struktur
      Wnd := Handle; // Handle auf Fenster
      uFlags := NIF_ICON + NIF_MESSAGE + NIF_TIP; // Flags
      uCallBackMessage := WM_TRAYMSG; // Message
      hIcon := Application.Icon.Handle; // Tray-Icon
      szTip := 'Blah blah'; // Tool-Tip
      end; // End With

      Shell_NotifyIcon(NIM_ADD, @notiTray); // Tray-Icon hinzufügen
      end;

      procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
      begin
      Shell_NotifyIcon(NIM_DELETE, @notiTray); // Tray-Icon wieder löschen
      end;

      // Message für das Tray-Icon...
      procedure TForm1.TrayMessage(var Message: TMessage);
      begin
      // z.B. Doppelklick abfangen...
      if Message.LParam = WM_LBUTTONDBLCLK then
      ShowMessage('Doppelklick!'#13#13'Wow!!!');
      end;

      end.
      </pre>
      <p>
      Zum Benutzen einfach neue Anwendung erstellen, kompletten Form-Quellcode durch Quellcode oben ersetzen, fertig!<p>
      Mehr Infos findest du in der Hilfe zu Shell_NotifyIcon.<p>
      Gruß,<br>
      Bernhar

      Comment


      • #4
        Hallo Bernhard,
        es hat prima geklappt, Danke erstmal.
        Jetzt bin gerade dabei das normale Icon in der Taskleiste verschwinden zu lassen.
        Gruß Andrea

        Comment


        • #5
          Hallo Robert,
          gibt es hinter der <b>Delphi Super Page</b> auch eine http: oder ftp: Adresse?
          Ich habe noch Probleme das Programm-Icon in der Task-Leiste verschwinden zu lassen. Ich bekomme es zwar weg, aber dann komme ich nie mehr an die Form ran.
          Gruß Andrea

          Comment


          • #6
            versuchs mal mit http://sunsite.informatik.rwth-aachen.de/delphi/

            andr

            Comment


            • #7
              Ich würde die Form einfach mit der <b>Form.Hide</b>-Methode verstecken, und mit <b>Form.Visible := True<b> wieder hervorholen. Natürlich gibt es 1000 Spielereien um das Programm vor den User ganz und gar zu verstecken, du findest dazu einige Artikel im Forum. Ich persönlich finde aber alle anderen Versteck-Methoden für den User eher verwirrend als nutzbringend.<p>
              Gruß,<br>
              Bernhar

              Comment


              • #8
                Ups, hm, da habe ich jetzt tatsächlich den schliessenden HTML-Tag übersehen...... jaja, man wird vergesslich......

                Comment

                Working...
                X