Sonntag

Tray Icon

Wie man sein Programm beim minimieren in ein Tray Icon verwandelt:


private
TaskBarNewReg : DWORD;
IconData: TNotifyIconData;
public
procedure WndProc(var Msg: TMessage); override;
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
TaskBarNewReg := RegisterWindowMessage('TaskbarCreated');
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 := 'Glamr´s Hotkey Tool - drink some beer!';
end;

procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
if Message.CmdType and $FFF0 = SC_MINIMIZE then
begin
Hide;
Shell_NotifyIcon(NIM_ADD, @IconData);
end
else
inherited;
end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @IconData);
end;

procedure TForm1.WndProc(var Msg: TMessage);
var
Point: TPoint;
begin
if Msg.Msg = WM_USER + 20 then
begin
case Msg.lParam of
WM_RBUTTONDOWN:
begin
SetForegroundWindow(Handle);
GetCursorPos(Point);
PopUpMenu1.PopUp(Point.X, Point.Y);
end;
WM_LBUTTONDOWN:
begin
//ShowMessage('links runter');
end;
// WM_LBUTTONDBLCLK:
//begin
// Fenster anzeigen
//Form1.Show;
// Icon entfernen
//Shell_NotifyIcon(NIM_DELETE, @IconData);
//end;
end;
end
else if Msg.Msg = TaskBarNewReg then
begin
Shell_NotifyIcon(NIM_ADD, @IconData);
end;
inherited;
end;

Bei fragen einfach einen Comment hinterlassen!