托盘小程序

时间:2015-11-12 10:01:25
【文件属性】:

文件名称:托盘小程序

文件大小:2KB

文件格式:TXT

更新时间:2015-11-12 10:01:25

托盘小程序

这几天没事做,研究了下Delphi的托盘编程 。现在很多程序都用这个,比如傲游,迅雷,==,很方便。主要代码如下: uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI, AppEvnts, StdCtrls, Menus; const WM_NID = WM_User + 1000; //声明一个常量 private { Private declarations } // 定义两个函数 procedure SysCommand(var SysMsg: TMessage); message WM_SYSCOMMAND; procedure WMNID(var msg:TMessage); message WM_NID; public end; var Form1: TForm1; NotifyIcon: TNotifyIconData; // 全局变量 implementation {$R *.dfm} procedure TForm1.WMNID(var msg:TMessage); var mousepos: TPoint; begin GetCursorPos(mousepos); //获取鼠标位置 case msg.LParam of WM_LBUTTONUP: // 在托盘区点击左键后 begin Form1.Visible := not Form1.Visible; // 显示主窗体与否 Shell_NotifyIcon(NIM_DELETE, @NotifyIcon); // 显示主窗体后删除托盘区的图标 SetWindowPos(Application.Handle, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW); // 在任务栏显示程序 end; WM_RBUTTONUP: PopupMenu1.Popup(mousepos.X, mousepos.Y); // 弹出菜单 end; end; procedure TForm1.FormDestroy(Sender: TObject); begin Shell_NotifyIcon(NIM_DELETE, @NotifyIcon); // 删除托盘图标 end; procedure TForm1.SysCommand(var SysMsg: TMessage); begin case SysMsg.WParam of SC_MINIMIZE: // 当最小化时 begin SetWindowPos(Application.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_HIDEWINDOW); Hide; // 在任务栏隐藏程序 // 在托盘区显示图标 with NotifyIcon do begin cbSize := SizeOf(TNotifyIconData); Wnd := Handle; uID := 1; uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; uCallBackMessage := WM_NID; hIcon := Application.Icon.Handle; szTip := '托盘程序'; end; Shell_NotifyIcon(NIM_ADD, @NotifyIcon); // 在托盘区显示图标 end; else inherited; end; end; {以下三个函数为托盘右键菜单,可自行添加功能} procedure TForm1.N1Click(Sender: TObject); begin ShowMessage('Delphi托盘小程序,Code by Zero Zhang'); end; procedure TForm1.N2Click(Sender: TObject); begin Form1.Visible := true; // 显示窗体 SetWindowPos(Application.Handle, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW); Shell_NotifyIcon(NIM_DELETE, @NotifyIcon); // 删除托盘图标 end; procedure TForm1.N3Click(Sender: TObject); begin Shell_NotifyIcon(NIM_DELETE, @NotifyIcon); Application.Terminate; end; end.


网友评论

  • 看得不是太懂,但是还是有可以借鉴的地方,谢谢~~
  • 虽然看得不是太懂,但是还是有可以借鉴的地方,谢谢~~