怎么将程序最小化到系统托盘

dragonchow 2001-03-20 07:38:00
...全文
183 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
torble 2001-07-24
  • 打赏
  • 举报
回复
来晚了
karron 2001-07-24
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ShellApi, Menus, AppEvnts;
const
CM_TRAYICON=WM_USER+1001;
TRAYICONID=1;
type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
exit1: TMenuItem;
ApplicationEvents1: TApplicationEvents;//ApplicationEventsApplicationEvents控件
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure exit1Click(Sender: TObject);
procedure ApplicationEvents1Minimize(Sender: TObject);
private
{ Private declarations }

FIcon:TIcon;
nid:TNOTIFYICONDATA;
procedure MessageHandle(var Msg:TMessage); message CM_TRAYICON;

public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

FIcon:=TIcon.Create ;
FIcon.Handle :=Application.Icon.Handle ;
{if Ficon.Handle =0 then
begin
MessageDlg('Don''t open the Icon!',mtError,[mbOK],0);
Application.Terminate ;
Exit;
end;
with nid do
begin
cbSize:=sizeof(nid);
Wnd:=Handle;
uId:=TRAYICONID;
uFlags:=NIF_MESSAGE+NIF_ICON+NIF_TIP;
StrPCopy(nid.szTip,Application.Title );
uCallBackMessage:= CM_TRAYICON; //WM_USER+1;
hIcon:=FIcon.Handle ;
Shell_NotifyIcon(NIM_ADD,@nid);
end;}
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Shell_NotifyIcon(NIM_DELETE,@nid);
FIcon.Free ;
end;

procedure TForm1.MessageHandle(var Msg:TMessage);
var
Point:TPoint;
begin

case Msg.Msg of
CM_TRAYICON:
case Msg.LParam of
WM_LBUTTONDBLCLK:
begin
if Visible then
hide
else
show;
end;
WM_RBUTTONUP:
begin
GetCursorPos(Point);
PopupMenu1.Popup(Point.x,Point.y);

end;
end;
end;
end;

procedure TForm1.exit1Click(Sender: TObject);
begin

close;

end;



procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
if Ficon.Handle =0 then
begin
MessageDlg('Don''t open the Icon!',mtError,[mbOK],0);
Application.Terminate ;
Exit;
end;
with nid do
begin
cbSize:=sizeof(nid);
Wnd:=Handle;
uId:=TRAYICONID;
uFlags:=NIF_MESSAGE+NIF_ICON+NIF_TIP;
StrPCopy(nid.szTip,Application.Title );
uCallBackMessage:= CM_TRAYICON;
hIcon:=FIcon.Handle ;
Shell_NotifyIcon(NIM_ADD,@nid);
end;

end;

end.

你试一下了,以前写的一个小实例。
光明山人 2001-07-24
  • 打赏
  • 举报
回复
RxLib中有TTrayIcon组件
dana 2001-07-23
  • 打赏
  • 举报
回复
trayicon的控件哪里可下。
sundayboys 2001-03-20
  • 打赏
  • 举报
回复
用trayicon这个控件啊
pc00000 2001-03-20
  • 打赏
  • 举报
回复
晕...
好老的问题啊.
最简单的方法是用控件啦...

去www.tinydb.com下载个控件, 源程序也有, 绝对好用!
coldljy 2001-03-20
  • 打赏
  • 举报
回复
属已解决问题。
http://www.csdn.net/expert/Topic/65731.shtm

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧