Hallo zusammen!
@olli:
Ich glaube nicht, dass er das meint
@barf00s:
Ich bin auch grade bei dem Thema und habe das so gelöst (jetzt nur ausm Kopf):
Delphi-Quellcode:
uses
{...,} ShellAPI;
type
TForm1 = class(TForm)
// ...
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
// ...
private
{ Private-Deklarationen }
FOldWndProc: TWndMethod;
FTrayCallbackMsg: Cardinal;
procedure MyWndProc(var Msg: TMessage);
// ...
end;
// ...
implementation
// ...
procedure TForm1.MyWndProc(var Msg: TMessage);
begin
if Msg.Msg = FTrayCallbackMsg then begin
case Msg.LParam of
WM_LBUTTONDBLCLK: begin
// ...
end;
WM_RBUTTONDOWN: begin
// ...
end
// Weitere abzufragende Tray-Icon-Botschaften...
end;
end;
FOldWndProc(Msg);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
TrayIcon: NOTIFYICONDATA;
begin
// Tray-Icon hinzufügen
// ...
FTrayCallbackMsg := RegisterWindowMessage('MyTrayCallbackMessage');
TrayIcon.uCallbackMessage := FTrayCallbackMsg;
// ...
// Eigene Window Procedure "registrieren"
FOldWndProc := WindowProc;
WindowProc := MyWndProc;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
WindowProc := FOldWndProc;
end;
Grüße, Marco