如何用最简单的方法使application只显示成系统托盘,而不出现在任务栏。
解决方案 »
- 谁有businessSkinform Visita 或者 MSN到风格啊?
- ReportBuilder在dll中的问题
- Delphi 2007下,idhttp post重定向地址错误?
- 猛禽的超强灌水,虽然与我不利,但是也要贴出来!他不贴我帖!
- 怎么生成一个注册表文件?
- Delphi7中为啥没有FastNet组件了?!
- win2k 下如何隐藏一个进程不出现在ctrl+alt+del列表??
- 怎么每隔2分钟循环执行下面5个不同语句【高手请进】谢谢
- 介绍不错的一个Delphi站点 http://www.wolfsoft.nugoo.com/ 站名:黄昏狼制作室
- 如何存取Oracle Number(18)的字段?
- 请教ACCESS字段类型
- 程序在不同系统中使用的问题
http://liulangren.xiloo.com/compdown/cooltray4.3.rar
我经常用它!
uses ShellAPI;var
ServerTrayIconData : TNotifyIconData;
在FormCreate中写
ServerTrayIconData.cbSize := SizeOf(ServerTrayIconData);
ServerTrayIconData.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE;
ServerTrayIconData.uID := UINT(Self);
ServerTrayIconData.Wnd := Handle;
ServerTrayIconData.hIcon := Application.Icon.Handle;
ServerTrayIconData.szTip := '服务器端';
ServerTrayIconData.uCallbackMessage := SERVER_TRAY_MESSAGE;
Shell_NotifyIcon(NIM_ADD, @ServerTrayIconData);
在FormActivate中写
Application.Minimize;
放一个
ApplicationEvents控件在Additional页面上
在它的onMinimize事件中写
ShowWindow(Application.Handle, SW_HIDE);就好了,如果要点击托盘做出反应就要加消息const
SERVER_TRAY_MESSAGE = WM_USER + 100; procedure ServerTrayMessage(var Message: TMessage); message SERVER_TRAY_MESSAGE;
procedure TMainForm.ServerTrayMessage(var Message: TMessage);
begin
if Message.Msg = SERVER_TRAY_MESSAGE then
begin
case Message.LParam of
WM_LBUTTONDBLCLK:
begin
if IsIconic(Application.Handle) then begin
ShowWindow(Application.Handle, SW_NORMAL);
SetForegroundWindow(Application.Handle);
end;
end;
end;
end;
end;
就好了不用外部控件的
在任务栏不显示窗体用
Application.ShowMainForm := false;
or
SetWindowLong(handle,gwl_exstyle,ws_ex_toolwindow);