delphi 启动后直接托盘的操作
【摘要】 君子性非异也,善假于物也...利用TNotifyIconData来实现最小化托盘,以及利用WndProc来实现双击图标时最大化1、引用单元文件:Winapi.ShellAPI,首先声明一个对象:TrayIconData: TNotifyIconData;2、窗体OnCreate事件:procedure TForm1.FormCreate(Sender: TObject);begin Tra...
君子性非异也,善假于物也...
利用TNotifyIconData来实现最小化托盘,以及利用WndProc来实现双击图标时最大化
1、引用单元文件:Winapi.ShellAPI,首先声明一个对象:
TrayIconData: TNotifyIconData;
2、窗体OnCreate事件:
procedure TForm1.FormCreate(Sender: TObject);
begin
TrayIconData.cbSize := SizeOf(TNotifyIconData);
TrayIconData.Wnd := Self.Handle;//窗体的句柄
TrayIconData.uID := 1;
TrayIconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
TrayIconData.uCallbackMessage := WM_USER + 1;//自定义的消息号
TrayIconData.hIcon := Application.Icon.Handle;//应用程序的图标
StrPCopy(TrayIconData.szTip, '鼠标指向图标时的提示信息,如:Test.exe');
Shell_NotifyIcon(NIM_ADD, @TrayIconData);
WindowState := wsMinimized;
Application.OnMinimize := MinimizeToTray;//关联应用程序的最小化事件
end;
3、MinimizeToTray代码段:
procedure TForm1.MinimizeToTray(Sender: TObject);
begin
if WindowState = wsMinimized then
begin
Hide();//窗体隐藏
TrayIconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
TrayIconData.uCallbackMessage := WM_USER + 1;//回调消息
TrayIconData.hIcon := Application.Icon.Handle;
StrPCopy(TrayIconData.szTip, 'Test.exe');
Shell_NotifyIcon(NIM_MODIFY, @TrayIconData);
end;
end;
4、WndProc代码段:
声明:
procedure WndProc(var Message: TMessage);override;//一定要写上override
实现:
procedure TForm1.WndProc(var Message: TMessage);
begin
if Message.Msg = WM_USER + 1 then
begin
if (Message.LParam = WM_LBUTTONDBLCLK) then
begin
Show();
WindowState := wsMaximized;
TrayIconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
TrayIconData.uCallbackMessage := WM_USER + 1;
TrayIconData.hIcon := Application.Icon.Handle;
StrPCopy(TrayIconData.szTip, 'Test.exe');
Shell_NotifyIcon(NIM_MODIFY, @TrayIconData);
end;
end;
inherited WndProc(Message);//继续循环Windows消息
end;
5、窗体的Destory,移除托盘及图标:
procedure TForm1.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @TrayIconData);
end;
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)