![]() |
Programm in der TNA ablegen
Delphi-Quellcode:
ShellAPI nicht vergessen.
unit Unit1;
interface uses Windows, Messages, Forms, ShellAPI, Menus, Classes; type TForm1 = class(TForm) PopupMenu1: TPopupMenu; Item11: TMenuItem; Item21: TMenuItem; Item31: TMenuItem; procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } // für MessageID von RegisterWindowsMessage TaskBarNewReg : DWORD; IconData: TNotifyIconData; public { Public-Deklarationen } procedure WndProc(var Msg: TMessage); override; procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; end; var Form1: TForm1; implementation {$R *.dfm} //////////////////////////////////////////////////////////////////////////////// // auf Mausklicks reagieren, Fensterprozedur erweitern procedure TForm1.WndProc(var Msg: TMessage); var Point: TPoint; begin // WM_USER + 20 ist unsere TNA Icon Nachricht if Msg.Msg = WM_USER + 20 then begin // im lParam steht die Nachricht case Msg.lParam of // rechte Taste für Menü WM_RBUTTONDOWN: begin SetForegroundWindow(Handle); GetCursorPos(Point); PopUpMenu1.PopUp(Point.X, Point.Y); end; // linke Taste WM_LBUTTONDOWN: begin //ShowMessage('links runter'); end; // Doppelklick WM_LBUTTONDBLCLK: begin // Fenster anzeigen Form1.Show; // Icon entfernen Shell_NotifyIcon(NIM_DELETE, @IconData); end; end; end // Taskbar wurde im System registriert, Icon einfügen else if Msg.Msg = TaskBarNewReg then begin Shell_NotifyIcon(NIM_ADD, @IconData); end; inherited; end; //////////////////////////////////////////////////////////////////////////////// // beim Minimieren Fomr verstecken und Icon in die TNA procedure TForm1.WMSysCommand(var Message: TWMSysCommand); begin // Fenster wurde minimiert if Message.CmdType and $FFF0 = SC_MINIMIZE then begin Hide; // Icon in der TNA anzeigen Shell_NotifyIcon(NIM_ADD, @IconData); end else inherited; end; //////////////////////////////////////////////////////////////////////////////// // Beim beenden Icon entfernen procedure TForm1.FormDestroy(Sender: TObject); begin Shell_NotifyIcon(NIM_DELETE, @IconData); end; //////////////////////////////////////////////////////////////////////////////// // Beim Erstellen des Formulares TNotifyIconData-Struktur initialisieren procedure TForm1.FormCreate(Sender: TObject); begin // Message ID für Message merken, die gesendet wird, wenn die Taskbar im // System registriert wird. TaskBarNewReg := RegisterWindowMessage('TaskbarCreated'); // IconData Struktur füllen IconData.cbSize := SizeOf(IconData); IconData.Wnd := Handle; IconData.uID := 100; IconData.uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP; IconData.uCallBackMessage := WM_USER + 20; IconData.hIcon := Application.Icon.Handle; IconData.szTip := 'Dies ist ein TNA-Icon'; // Icon einfügen. Bei Bedarf sofort //Shell_NotifyIcon(NIM_ADD, @IconData); end; end. [edit=Matze]Code aktualisiert. Mfg, Matze[/edit] [edit=Matze]Suchbegriffe hinzugefügt: Tray, Systray, TNA. Mfg, Matze[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz