当前位置:主页>仓库管理软件> 列表

托盘程序

企业管理软件版1楼: 我做了一个托盘程序,想实现如下功能,窗体最小化后,双击鼠标左键,窗体不再跳出,单击鼠标右键有菜单跳出。
请大侠们指教!

2楼: 直接去下载个托盘控件.盒子论坛有! 如财务软件免费下载

3楼: 下载了不知怎么完成上面的功能

4楼: 直接用 rxlib 中的一个控件即可。

5楼: 托盘程序已经做好了,只是想完成: 窗体最小化后,双击鼠标左键,窗体不再跳出,单击鼠标右键有菜单跳出。

6楼: 例如:
在Shell32.DLL动态链接库中包括一个函数Shell_NotifyIconA()可通知Windows在任务条右下角加入一个小图标,可惜该函数的详细说明未收入Delphi的帮助文档中,下面以一个简单的实例来说明如果使用该函数。
具体代码如下:
unit Unit1;

interface

{ 记住在uses部分中包括 ShellAPI}
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
ShellAPI, StdCtrls;

{自定义消息,当小图标捕捉到鼠标事件时Windows向回调函数发送此消息}
const MY_MESSAGE = WM_USER + 100;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormPaint(Sender: TObject);
private
procedure OnIconNotify(var Message: TMessage);
message MY_MESSAGE;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

{当小图标捕捉到鼠标事件时进入此过程}
procedure TForm1.OnIconNotify(var Message: TMessage);
const
Busy: Boolean ;
begin
if not Busy then begin
Busy := true;
if Message.LParam=WM_LBUTTONDOWN then
if Application.MessageBox(''Are you sure'',
''Exit'', MB_YESNO)=IDYES then Close;
Busy := false;
end;
end;

{当主Form建立时通知Windows加入小图标}
procedure TForm1.FormCreate(Sender: TObject);
var
nid: TNotifyIconData;
begin
nid.cbSize := sizeof(nid); // nid变量的字节数
nid.Wnd := Handle; // 主窗口句柄
nid.uID := 1; // 内部标识,可设为任意数
nid.hIcon := Application.Icon.Handle; // 要加入的图标句柄,可任意指定
nid.szTip := ''This is a test application''; // 提示字符串
nid.uCallbackMessage := MY_MESSAGE; // 回调函数消息
nid.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE; // 指明哪些字段有效
if not Shell_NotifyIcon(NIM_ADD, @nid) then begin
ShowMessage(''Failed!'');
Application.Terminate;
end;
{将程序的窗口样式设为TOOL窗口,可避免在任务条上出现}
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
end;

{程序被关闭时通知Windows去掉小图标}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
nid: TNotifyIconData;
begin
nid.cbSize := sizeof(nid); // nid变量的字节数
nid.uID := 1; //内部标识,与加入小图标时的数一致
nid.Wnd := Handle; //主窗口句柄
Shell_NotifyIcon(NIM_DELETE, @nid); //去掉小图标
end;

{主窗口初始化完毕并显示时将激活Paint重画事件,此时将主窗口隐藏}
procedure TForm1.FormPaint(Sender: TObject);
begin
Hide;
end;

end.

注意:
如果要单击小图标要提示 退出或者有菜单
1、更改自己定义的函数为
procedure TForm1.OnIconNotify(var Message: TMessage);
var
p: TPoint;
begin
if (message.lParam = WM_RBUTTONDOWN) or (message.lParam = WM_LBUTTONDOWN) then
begin
{ GetCursorPos(p);
PopupMenu1.Popup(p.x, p.y); }
if application.MessageBox(''是否要退出操作?'',''系统信息提示'',4+32)=6 then
close;
end;
end;
2、在 private 或者 public 部分添加
message MY_MESSAGE;

企业管理软件版7楼: 最完美的是看socket的那个源码,效果最好,自己改吧,borland的东西啊,我都自己改啦,源码在安装目录下,自己找

8楼: 我帮你该好了,要的话联系我helloyzy@zj.com

9楼: 多人接受答案了。