Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi SystemTray (https://www.delphipraxis.net/4180-systemtray.html)

RobertS 18. Apr 2003 10:13


SystemTray
 
Hi,

also ich kann mir ja nicht vorstellen das diese Frage hier noch nicht gefaqllen ist aber ich habe in der Suche einfach nichts gefunden, vielleicht habe ich ja nur falsch gesucht..aber nix gefunden.

• So meine Frage
Wie kriege ich mein Programm unten in das SystemTray also unten neben die Uhr?

Danke schonmal.

Schöne Ostern!

flomei 18. Apr 2003 10:17

Von www.delphi-fundgrube.de
Zitat:

Ein TrayIcon in der Taskbar Notification Area (neben der Systemuhr) anzeigen

Wie erreicht man, daß anstelle des normalen Programm-Buttons in der Windows-Taskbar ein TrayIcon in der Taskbar Notification Area neben der Windows.Systemuhr angezeigt wird?

Dafür gibt es die API-Funktion Shell_NotifyIcon() und den Daten-Record TNotifyIconData. Und so bindet man das ganze in ein Programm ein (Beispiel von Heino Tiedemann):

Delphi-Quellcode:
uses
  ShellAPI;

const
  WM_TASKABAREVENT = WM_USER+1; //Taskbar message
[...]

type
  TMainForm = class(TForm)
[...]
private
    { Private-Deklarationen }
    procedure TaskbarEvent(var Msg: TMessage);
      Message WM_TASKABAREVENT;
[...]

{Message-Prozedur für das TrayIcon}
procedure TMainForm.TaskbarEvent(var Msg: TMessage);
var Point : TPoint;
begin

  { Die WM_TaskbarEvent-Message "Msg" gibt in Msg.LParam
    das genaue Ereignis an. Msg.LParam kann folgende Werte für
    Mausereignisse annehmen:

    WM_MouseMove
    WM_LButtonDown
    WM_LButtonUp
    WM_LButtonDblClk
    WM_RButtonDown
    WM_RButtonUp
    WM_RButtonDblClk }

  { Eventhandler-Beispiele von Robert Fischer: }
  case Msg.LParam of
    WM_LBUTTONDBLCLK:
      begin
        //Mach etwas nach einem Doppelklick...
      end;
    WM_LBUTTONUP:
      begin
        //Mach etwas nach einem Linksklick...
      end;
    WM_RBUTTONUP:
      begin
        // Rechtsklick
        // Diese Zeile ist wichtig, damit das PopupMenu korrekt
        // wieder geschlossen wird:
        SetForegroundWindow(Handle);
        // PopupMenu anzeigen:
        GetCursorPos(Point);
        PopupMenu1.Popup(Point.x, Point.y);
        //oder ohne Variable Point:
        //PopupMenu1.Popup(Mouse.CursorPos.x, Mouse.CursorPos.y);
      end;
  end;
end;

{TrayIcon mit dem Hauptformular erzeugen}
procedure TMainForm.FormCreate(Sender: TObject);
var
  NotifyIconData: TNotifyIconData;
begin
  Fillchar(NotifyIconData,Sizeof(NotifyIconData),0);
  NotifyIconData.cbSize := Sizeof(NotifyIconData);
  NotifyIconData.Wnd   := Handle;
  NotifyIconData.uFlags := NIF_MESSAGE
    or NIF_ICON
    or NIF_TIP;
  NotifyIconData.uCallbackMessage := WM_TASKABAREVENT;
  NotifyIconData.hIcon := Application.Icon.Handle;
  NotifyIconData.szTip := 'Hinweistext für das TrayIcon';
  Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
end;

{TrayIcon mit dem Hauptformular zerstören}
procedure TMainForm.FormDestroy(Sender: TObject);
var
  NotifyIconData: TNotifyIconData;
begin
  FillChar(NotifyIconData,Sizeof(NotifyIconData),0);
  NotifyIconData.cbSize := Sizeof(NotifyIconData);
  NotifyIconData.Wnd   := Self.Handle;
  NotifyIconData.uFlags := NIF_MESSAGE
    or NIF_ICON
    or NIF_TIP;
  NotifyIconData.uCallbackMessage := WM_TASKABAREVENT;
  NotifyIconData.hIcon := Application.Icon.Handle;
  NotifyIconData.szTip := 'Punkt';
  Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
end;

Hab es selber noch nicht ausprobiert.

MfG Florian :hi:

flomei 18. Apr 2003 10:28

:| es funktioniert wenn man
Zitat:

Message WM_TASKABAREVENT;
das rauslässt. Er zeigt ein Icon an aber kein PopUp Menü. Mal schauen wie das geht.

MfG Florian :hi:

RobertS 18. Apr 2003 10:30

Merci für die schnelle Antwort..werde es mal ausprobieren

flomei 18. Apr 2003 10:32

plz. :) Ich bin immer noch dabei rauszufinden wie das mit dem PopUpMenu geht.

MfG Florian :hi:

flomei 18. Apr 2003 10:41

Siehe auch: Code Library

MfG Florian :hi:

[EDIT] Falsche URL. sorry :( [/EDIT]

Stanlay Hanks 18. Apr 2003 20:00

Bei torry gibts ne Freeware Komponente. Ich hab die schon ausprobiert und finde sie sehr empfehlenswert. Man kann Icons und Popup festlegen und auch die Icons in einem bestimmten Interval durchwechseln lassen.

Gibts hier: Torry.net (CoolTrayIcon)

wenns nicht funktionert , such bei Torry.net nach 'CoolTrayIcon'. Bis dann. Man ließt sich. Stanlay

flomei 16. Mai 2003 19:35

Das gleiche gibt es auch beim TWS Instrumentation Workshop.
Hier zu finden!

Oder auch bei der JediVCL. Hier!

MfG Florian :hi:

Stanlay Hanks 16. Mai 2003 20:16

Ich kann dir auch nur CoolTrayIcon empfehlen. Hat n haufen Features.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz