如何让程序运行后自己放到系统托盘里? 如何让程序运行后自己放到系统托盘里要用户点击后才有窗口显示?有这方面的控件吗?或是用代码怎么实现?谢谢。[email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用组件CoolTray的TCoolTrayIcon网上可以下载 向系统托盘中加入图标控制菜单: 向系统托盘中加入图标控制菜单须用到函数Shell_NotifyIconA,而这个函数又有两个参数:'TnotifyIconDataA'结构的参数和一个消息参数即:Shell_NotifyIconA(dwMessage:DWORD;lpData:PNotifyIconDataA),第一个参数dwMessage可以是以下值:NIM_ADD:增加一个图标 ;NIM_MODIFY:修改一个已有的图标 ;NIM_DELETE:删除一个已有的图标 ; 搜索一下就有大把代码。unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, shellapi, StdCtrls;const WM_TRAYNOTIFY = WM_USER+100; //任务区小图标自定义消息type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private procedure TrayNotifyMessage(var Sender: TMessage); message WM_TRAYNOTIFY; procedure MarkTaskBarIcon(Sender: TObject); { Private declarations } public { Public declarations } end;var Form1: TForm1; tnd: TNOTIFYICONDATA;implementation{$R *.dfm}procedure TForm1.MarkTaskBarIcon(Sender: TObject);begin Form1.Visible := False; tnd.cbSize := sizeof(tnd); tnd.Wnd := Handle; tnd.uID := 128; tnd.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP; tnd.uCallbackMessage := WM_TRAYNOTIFY; tnd.hIcon := Application.Icon.Handle; StrPCopy(tnd.szTip,Application.Title); Shell_NotifyIcon(NIM_ADD,@tnd);end;procedure TForm1.TrayNotifyMessage(var Sender: TMessage);begin if Sender.LParam = WM_LBUTTONDBLCLK then begin Form1.Visible := True; Application.Restore; Application.BringToFront; end;end;procedure TForm1.FormCreate(Sender: TObject);begin Application.OnMinimize := MarkTaskBarIcon; MarkTaskBarIcon();end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin Shell_NotifyIcon(NIM_DELETE,@tnd);end;end. 第一步:先在文件里加入一行:Application.ShowMainForm := false;隐藏主窗口.第二步:消息procedure WMSysCommand(var Message:TMessage);message WM_SYSCOMMAND; 第三步:在窗体的oncreate事件里procedure TForm1.FormCreate(Sender: TObject);Var lpData: TNotifyIconData;begin lpData.cbSize := 88; lpData.Wnd := Form1.Handle; lpData.hIcon := Form1.Icon.Handle; lpData.uCallbackMessage := WM_BARICON; lpData.uID :=0; lpData.szTip := '节目定时播放器'; lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; Shell_NotifyIcon(NIM_ADD,@lpData); //==================================================end; 为什么我的delphi报表在运行时窗体上不显示caption内容 如何控制RichEdit或MemoEdit滚动速度? 请教各位SQL里'号的细节用法。 在月底终于脱掉了裤衩!散分!~ dbgrid的问题??急 用?? 在delphi中怎样做象QQ的热键? tquery问题 pos机难题求解!! 请问应用程序服务器一定要在NT操作系统下编写吗? 如何发布用ADO技术实现的应用? 报表没有了? 请问哪里有"Object Pascal Language Guide "的中文版下载?急用!!
网上可以下载
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, shellapi, StdCtrls;
const
WM_TRAYNOTIFY = WM_USER+100; //任务区小图标自定义消息type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
procedure TrayNotifyMessage(var Sender: TMessage);
message WM_TRAYNOTIFY;
procedure MarkTaskBarIcon(Sender: TObject);
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
tnd: TNOTIFYICONDATA;implementation{$R *.dfm}procedure TForm1.MarkTaskBarIcon(Sender: TObject);
begin
Form1.Visible := False;
tnd.cbSize := sizeof(tnd);
tnd.Wnd := Handle;
tnd.uID := 128;
tnd.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
tnd.uCallbackMessage := WM_TRAYNOTIFY;
tnd.hIcon := Application.Icon.Handle;
StrPCopy(tnd.szTip,Application.Title);
Shell_NotifyIcon(NIM_ADD,@tnd);
end;procedure TForm1.TrayNotifyMessage(var Sender: TMessage);
begin
if Sender.LParam = WM_LBUTTONDBLCLK then
begin
Form1.Visible := True;
Application.Restore;
Application.BringToFront;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMinimize := MarkTaskBarIcon;
MarkTaskBarIcon();
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Shell_NotifyIcon(NIM_DELETE,@tnd);
end;end.
第二步:消息
procedure WMSysCommand(var Message:TMessage);message WM_SYSCOMMAND;
第三步:在窗体的oncreate事件里
procedure TForm1.FormCreate(Sender: TObject);
Var
lpData: TNotifyIconData;
begin
lpData.cbSize := 88;
lpData.Wnd := Form1.Handle;
lpData.hIcon := Form1.Icon.Handle;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := '节目定时播放器';
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
Shell_NotifyIcon(NIM_ADD,@lpData);
//==================================================
end;