![]() |
TrayIcon ohne MainForm
Hi,
ich habe ein programm ohne main form, möchte aber ein TrayIcon erstellen. Zum erstellen des Tray Icons gibt es ja genug tuts, nur was ich mich fraghe, wie reagiere ich auf klicks auf das TrayIcon? In allen tuts wied der mainform das hier hinzugefügt:
Delphi-Quellcode:
Wie reagiere ich auf klicks ohne mainform? wo sage ich ihm welche procedure er ausführen soll sobald es geklickt wird?
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; Danke für alle antworten. MfG Hybrid666 |
Re: TrayIcon ohne MainForm
Wieso hast du denn kein Window in deiner Anwendung?
Ansonsten benutze ein TWincontrol oder nutze allocatehwnd um die Messages zu empfangen. |
Re: TrayIcon ohne MainForm
ansich ist es keine anwendung, sondern eine DLL, die aber im speicher geladen bleibt und wie ein programm agiert. wird ein plugin fürn anderes programm, unter anderem mit dem tool en tray icon anzuzeigen ^^.
Naja könntest du das bissle genauer ausformulieren was du das vorgeschlagen hast? MfG |
Re: TrayIcon ohne MainForm
|
Re: TrayIcon ohne MainForm
danke...habe mir das ding mal grob durchgeschaut, scheint alles zu haben...werde den code die tage mal durchgehen und ihn versuchen zu verstehen, wenn ich noch fragen hab werd ich posten :D
Danke! |
Re: TrayIcon ohne MainForm
servus,
ich hab mir den code nu durchgeschaut und verstehe soweit alles, nur hab ich nu ne frage: ich will das ding in der dll minimalistisch halten und keine komponenten verwenden, wie kann ich allocatehwnd auf ne normale prozedur anwenden? denn wen ich einfach so ne OnMessage prozedur erstelle und allocatehwnd drauf anwende, sagt er mir das geht nicht. MfG |
Re: TrayIcon ohne MainForm
auf eine normale Procedure gar nicht. Aber was hält dich davon ab einfach eine Klasse selbst zu bauen? da TObject immer eingebunden ist wird sich das beim Speicherverbrauch nicht wirklich merklich auswirken.
Ansonsten musst du nonvcl mäßig ran gehen und mit CreateWindow ein unsichtbares Fenster erzeugen. |
Re: TrayIcon ohne MainForm
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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-2025 by Thomas Breitkreuz