要能在运行时改变也可以不在启动时最小化到系统托盘。
解决方案 »
- 接口问题:为什么不能用as
- 使用Qreport控件做打印报表时,为什么会出先打印出来的和预览的不一致
- 在一个模块中用到了Combobox1和Combobox2两个控件
- ************高手们帮忙.怎么删除任务栏图标?(只有40分了.下次再补)!************
- 掌声响起来
- TQuery控件中,如何修改当前记录的值?
- QQ群:210596141 delphi高层论坛 闲人止步!
- 最简单的问题:怎样在字符串中换行
- 如何将Delphi报表的内容导出到WORD中(报表中带有表格)
- 请问何处有REPORT BUILDER的具体用法的资料呢?
- 各位大侠能告诉我怎么把flash图画放到form中并在运行的时候显示吗
- 服务端用C++做的,客户端用DELPHI做,能用SOCKET通信吗?
TrayIcon1.IconVisible := True;
interface
uses
ShellAPI,ShlObj;
const
WM_BARICON = WM_USER + 200;
cm_Exit = 100;
cm_About = 101;
private
procedure WMSysCommand(var Message:TMessage);
message WM_SYSCOMMAND;
procedure WMBarIcon(var Message:TMessage);
message WM_BARICON;
type
_NOTIFYICONDATAW = record
cbSize: DWORD;
Wnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hIcon: HICON;
szTip: array [0..63] of WideChar;
end;
var
TNotifyIconData: _NOTIFYICONDATAW;
procedure TfrmMain.WMSysCommand(var Message: TMessage);// message WM_SYSCOMMAND;
var
lpData:PNotifyIconData;
begin
if Message.WParam = SC_ICON then
begin
//如果用户最小化窗口则将窗口隐藏并在任务栏上添加图标
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88;
//SizeOf(PNotifyIconDataA);
lpData.Wnd := frmMain.Handle;
lpData.hIcon := frmMain.Icon.Handle;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := 'GPS信息';
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
Shell_NotifyIcon(NIM_ADD,lpData);
dispose(lpData);
frmMain.Visible := False;
end
else
begin
//如果是其它的SystemCommand 消息则调用系统缺省处理函数处理之。
DefWindowProc(frmMain.Handle,Message.Msg,Message.WParam,Message.LParam);
end;
end;
procedure TfrmMain.WMBarIcon(var Message:TMessage);//message WM_BARICON;
var
lpData:PNotifyIconData;
begin
if (Message.LParam = WM_LBUTTONDOWN) then
begin
//如果用户点击任务栏图标则将图标删除并回复窗口。
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88;//SizeOf(PNotifyIconDataA);
lpData.Wnd := frmMain.Handle;
lpData.hIcon := frmMain.Icon.Handle;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := 'GPS信息';
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
Shell_NotifyIcon(NIM_DELETE,lpData);
dispose(lpData);
frmMain.Visible := True;
end;
end;
sendmessage(frmMain.Handle,WM_SYSCOMMAND,SC_MINIMIZE,0);
即可。
TrayIcon1.IconVisible := True;
TrayIcon1.enable := true;