托盘小程序
这几天没事做,研究了下Delphi的托盘编程。现在很多程序都用这个,比如傲游,迅雷,==,很方便。主要代码如下:"
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI, AppEvnts, StdCtrls, Menus;
const WM_NID = WM_User + 1000; //声明一个常量
default private { Private declarations } //定义两个函数procedure SysCommand(var SysMsg: TMessage); message WM_SYSCOMMAND; procedure WMNID(var msg:TMessage); message WM_NID; default 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; //显示主窗体与否
delete NotifyIcon; //删除托盘区的图标SetWindowPos(Application.Handle, HWND_TOP, 0, SWP_SHOWWINDOW); //在任务栏显示程序end; WM_RBUTTONUP: PopupMenu1.Popup(mousepos.X, mousepos.Y); //弹出菜单end; procedure TForm1.FormDestroy(Sender: TObject); begin delete NotifyIcon; //删除托盘图标end;procedure TForm1.
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI, AppEvnts, StdCtrls, Menus;
const WM_NID = WM_User + 1000; //声明一个常量
default private { Private declarations } //定义两个函数procedure SysCommand(var SysMsg: TMessage); message WM_SYSCOMMAND; procedure WMNID(var msg:TMessage); message WM_NID; default 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; //显示主窗体与否
delete NotifyIcon; //删除托盘区的图标SetWindowPos(Application.Handle, HWND_TOP, 0, SWP_SHOWWINDOW); //在任务栏显示程序end; WM_RBUTTONUP: PopupMenu1.Popup(mousepos.X, mousepos.Y); //弹出菜单end; procedure TForm1.FormDestroy(Sender: TObject); begin delete NotifyIcon; //删除托盘图标end;procedure TForm1.
2.46KB
文件大小:
评论区