怎样把程序最小化到系统栏,缩为一个图标。我已经让程序显示系统栏的图标了,可是最小化和最大化怎么办?我希望程序最小化后任务栏就不显 调用API处理相关消息——这个问题曾有过很多论述的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SetWindowLong(Application.Handle, GWL_EXSTYLE,WS_EX_TOOLWINDOW); 最小化时,让窗口Hide,或者Visible:=False;最大化时,设置WindowStyle属性为wsMaxmaized,然后让窗口Show,或者Visible:=True;有空多多交流:OICQ:43579041 那是系统托盘程序,我给你一个。unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus,ShellAPI{加入API},Mmsystem;Const ICON_id = 1; //ICON的ID标志 MI_ICONEVENT = WM_USER + 1;//自定义ICON事件消息type TForm1 = class(TForm) PopupMenu1: TPopupMenu; aaa1: TMenuItem; bbb1: TMenuItem; ccc1: TMenuItem; CDROM1: TMenuItem; N1: TMenuItem; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormActivate(Sender: TObject); procedure ccc1Click(Sender: TObject); procedure aaa1Click(Sender: TObject); procedure bbb1Click(Sender: TObject); procedure CDROM1Click(Sender: TObject); procedure N1Click(Sender: TObject); private { Private declarations } //正常和失效两种情况下图标 NormalIcon,DisabledIcon:TIcon; Status:Boolean;//定义标志是“允许使用”还是“禁止使用” Procedure InstallIcon;//声明过程InstallIcon用来在托盘中安装图标 Procedure ChangeIcon(s:Boolean);//声明过程ChangeIcon用于改变本程序以托盘中的图标 Procedure UnInstallIcon;//声明过程UnInstallIcon用于卸载托盘中的图标 //捕捉自定义消息MI_ICONEVENT的过程IconOnClick的声明 Procedure IconOnClick(var Msg:Tmessage);message MI_ICONEVENT; public { Public declarations } end;var Form1: TForm1;implementationuses Unit2;{$R *.DFM}Procedure TForm1.ChangeIcon(s:Boolean);//过程ChangeIcon用于改变本程序以托盘中的图标var IconData:TNotifyIconData;begin IconData.cbSize := SizeOf(IconData); IconData.Wnd := Handle; IconData.uID := ICON_ID; if s=False then //禁止使用 begin IconData.hIcon := DisabledIcon.Handle; Status := False; end else begin IconData.hIcon := Normalicon.Handle; Status := True; end; IconData.uFlags := NIF_ICON; Shell_NotifyIcon(NIM_MODIFY,@IconData);end;//处理鼠标在托盘中对应的图标上的单击事件Procedure TForm1.IconOnClick(var Msg:Tmessage);var p:TPoint;begin if ((Msg.lParam=WM_LBUTTONDOWN) and (Status=True)) then //如果按下的是鼠标左键,并且允许显示,则显示窗体Form2 Form2.Show; if (Msg.lParam=WM_RBUTTONDOWN) then //如果按下的是鼠标右键,则显示弹出菜单 begin GetCursorPos(p); PopupMenu1.Popup(p.x,p.y); end;end;//过程InstallIcon用来在托盘中安装图标Procedure TForm1.InstallIcon;var IconData:TNotifyIconData;begin NormalIcon := TIcon.Create; DisabledIcon := TIcon.Create; //允许状态下的图标 NormalIcon.LoadFromFile('Normal.ico'); //禁止状态下的图标 DisabledIcon.LoadFromFile('Normal.ico'); IconData.cbSize := SizeOf(IconData); IconData.Wnd := Handle; IconData.UID := ICON_ID; IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; IconData.uCallBackMessage := MI_ICONEVENT; IconData.hIcon := NormalIcon.Handle; //鼠标悬在托盘中对应的图标上时的提示信息 IConData.szTip := 'asdfghjkl'; Shell_NotifyIcon(NIM_ADD,@IconData);end;//过程UnInstallIcon用于卸载托盘中的图标Procedure TForm1.UnInstallIcon;var Icondata : TNotifyIconData;begin IconData.cbSize := SizeOf(IconData); IconData.Wnd := Handle; IconData.uID := ICON_ID; Shell_NotifyIcon(NIM_DELETE,@IconData);end;//在窗体Form1的OnCreate事件处理过程中作初始化工作,安装图标并隐藏主窗体procedure TForm1.FormCreate(Sender: TObject);begin Status := True; //安装图标 InstallIcon; //改变图标为Normal状态 ChangeIcon(true); //隐藏主窗体 ShowWindow(Application.Handle,SW_HIDE); //在托盘中不显示程序图标 SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);end;//在窗体Form1的OnClose事件处理过程中作清除工作,卸载图标并释放图标资源procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin UnInstallIcon; NormalIcon.Free; DisabledIcon.Free;end;//在窗体Form1的Onactivate事件处理过程中隐藏窗体procedure TForm1.FormActivate(Sender: TObject);begin Form1.width := 0; Form1.Height := 0; ShowWindow(Application.Handle,SW_HIDE);end;procedure TForm1.ccc1Click(Sender: TObject);begin mciSendString('set cdaudio door open wait',nil,0,Handle);end;procedure TForm1.aaa1Click(Sender: TObject);begin ExitWindowsEx(EWX_REBOOT or EWX_POWEROFF,0);end;procedure TForm1.bbb1Click(Sender: TObject);begin ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF,0);end;procedure TForm1.CDROM1Click(Sender: TObject);begin mciSendString('set cdaudio door closed wait',nil,0,Handle);end;procedure TForm1.N1Click(Sender: TObject);begin Close;end;end. 你是做托盘程序呀!给多一点分,我告诉你一个地方你去DOWNLOAD一个例子和一个控件,保证好用,因为我们自己写出来的托盘好像占用系统资源比较多,这个好用!!!http://www.ms2008.com/delphi/21.htm用了之后,如果好的话,记得给我加分呀!!!!!!!!! 我给你一段例子”unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus,ShellAPI{加入API},Mmsystem;Const ICON_id = 1; //ICON的ID标志 MI_ICONEVENT = WM_USER + 1;//自定义ICON事件消息type TForm1 = class(TForm) PopupMenu1: TPopupMenu; aaa1: TMenuItem; bbb1: TMenuItem; ccc1: TMenuItem; CDROM1: TMenuItem; N1: TMenuItem; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormActivate(Sender: TObject); procedure ccc1Click(Sender: TObject); procedure aaa1Click(Sender: TObject); procedure bbb1Click(Sender: TObject); procedure CDROM1Click(Sender: TObject); procedure N1Click(Sender: TObject); private { Private declarations } //正常和失效两种情况下图标 NormalIcon,DisabledIcon:TIcon; Status:Boolean;//定义标志是“允许使用”还是“禁止使用” Procedure InstallIcon;//声明过程InstallIcon用来在托盘中安装图标 Procedure ChangeIcon(s:Boolean);//声明过程ChangeIcon用于改变本程序以托盘中的图标 Procedure UnInstallIcon;//声明过程UnInstallIcon用于卸载托盘中的图标 //捕捉自定义消息MI_ICONEVENT的过程IconOnClick的声明 Procedure IconOnClick(var Msg:Tmessage);message MI_ICONEVENT; public { Public declarations } end;var Form1: TForm1;implementationuses Unit2;{$R *.DFM}Procedure TForm1.ChangeIcon(s:Boolean);//过程ChangeIcon用于改变本程序以托盘中的图标var IconData:TNotifyIconData;begin IconData.cbSize := SizeOf(IconData); IconData.Wnd := Handle; IconData.uID := ICON_ID; if s=False then //禁止使用 begin IconData.hIcon := DisabledIcon.Handle; Status := False; end else begin IconData.hIcon := Normalicon.Handle; Status := True; end; IconData.uFlags := NIF_ICON; Shell_NotifyIcon(NIM_MODIFY,@IconData);end;//处理鼠标在托盘中对应的图标上的单击事件Procedure TForm1.IconOnClick(var Msg:Tmessage);var p:TPoint;begin if ((Msg.lParam=WM_LBUTTONDOWN) and (Status=True)) then //如果按下的是鼠标左键,并且允许显示,则显示窗体Form2 Form2.Show; if (Msg.lParam=WM_RBUTTONDOWN) then //如果按下的是鼠标右键,则显示弹出菜单 begin GetCursorPos(p); PopupMenu1.Popup(p.x,p.y); end;end;//过程InstallIcon用来在托盘中安装图标Procedure TForm1.InstallIcon;var IconData:TNotifyIconData;begin NormalIcon := TIcon.Create; DisabledIcon := TIcon.Create; //允许状态下的图标 NormalIcon.LoadFromFile('Normal.ico'); //禁止状态下的图标 DisabledIcon.LoadFromFile('Normal.ico'); IconData.cbSize := SizeOf(IconData); IconData.Wnd := Handle; IconData.UID := ICON_ID; IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; IconData.uCallBackMessage := MI_ICONEVENT; IconData.hIcon := NormalIcon.Handle; //鼠标悬在托盘中对应的图标上时的提示信息 IConData.szTip := 'asdfghjkl'; Shell_NotifyIcon(NIM_ADD,@IconData);end;//过程UnInstallIcon用于卸载托盘中的图标Procedure TForm1.UnInstallIcon;var Icondata : TNotifyIconData;begin IconData.cbSize := SizeOf(IconData); IconData.Wnd := Handle; IconData.uID := ICON_ID; Shell_NotifyIcon(NIM_DELETE,@IconData);end;//在窗体Form1的OnCreate事件处理过程中作初始化工作,安装图标并隐藏主窗体procedure TForm1.FormCreate(Sender: TObject);begin Status := True; //安装图标 InstallIcon; //改变图标为Normal状态 ChangeIcon(true); //隐藏主窗体 ShowWindow(Application.Handle,SW_HIDE); //在托盘中不显示程序图标 SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);end;//在窗体Form1的OnClose事件处理过程中作清除工作,卸载图标并释放图标资源procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin UnInstallIcon; NormalIcon.Free; DisabledIcon.Free;end;//在窗体Form1的Onactivate事件处理过程中隐藏窗体procedure TForm1.FormActivate(Sender: TObject);begin Form1.width := 0; Form1.Height := 0; ShowWindow(Application.Handle,SW_HIDE);end;“ delphi打印问题 TNMSmtp发邮件问题 求助:C++语句转DELPHI ClientSocket占用的资源在什么时候释放?? 用tserversocket做了个服务器软件,但多个客户连接下载文件时,速度奇慢 江湖救急啊!! StringList有什么用?怎么用?请举例 我怎样才能在工程之中改变启动时候得form 怎样用NMFTP象网络蚂蚁那样自动获得下载文件的地址 讨论:程序员应不应该休息。 请教高手,有没有简单的办法算出2个字符串'2000-01-02 10:10'和'2000-01-02 10:30'的时间差??单位是分钟 关于delphi的rcdate的问题
最大化时,设置WindowStyle属性为wsMaxmaized,然后让窗口Show,或者Visible:=True;有空多多交流:OICQ:43579041
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus,ShellAPI{加入API},Mmsystem;Const
ICON_id = 1; //ICON的ID标志
MI_ICONEVENT = WM_USER + 1;//自定义ICON事件消息
type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
aaa1: TMenuItem;
bbb1: TMenuItem;
ccc1: TMenuItem;
CDROM1: TMenuItem;
N1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
procedure ccc1Click(Sender: TObject);
procedure aaa1Click(Sender: TObject);
procedure bbb1Click(Sender: TObject);
procedure CDROM1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
//正常和失效两种情况下图标
NormalIcon,DisabledIcon:TIcon;
Status:Boolean;//定义标志是“允许使用”还是“禁止使用”
Procedure InstallIcon;//声明过程InstallIcon用来在托盘中安装图标
Procedure ChangeIcon(s:Boolean);//声明过程ChangeIcon用于改变本程序以托盘中的图标
Procedure UnInstallIcon;//声明过程UnInstallIcon用于卸载托盘中的图标
//捕捉自定义消息MI_ICONEVENT的过程IconOnClick的声明
Procedure IconOnClick(var Msg:Tmessage);message MI_ICONEVENT;
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.DFM}Procedure TForm1.ChangeIcon(s:Boolean);//过程ChangeIcon用于改变本程序以托盘中的图标
var
IconData:TNotifyIconData;
begin
IconData.cbSize := SizeOf(IconData);
IconData.Wnd := Handle;
IconData.uID := ICON_ID;
if s=False then //禁止使用
begin
IconData.hIcon := DisabledIcon.Handle;
Status := False;
end
else
begin
IconData.hIcon := Normalicon.Handle;
Status := True;
end;
IconData.uFlags := NIF_ICON;
Shell_NotifyIcon(NIM_MODIFY,@IconData);
end;
//处理鼠标在托盘中对应的图标上的单击事件
Procedure TForm1.IconOnClick(var Msg:Tmessage);
var
p:TPoint;
begin
if ((Msg.lParam=WM_LBUTTONDOWN) and (Status=True)) then
//如果按下的是鼠标左键,并且允许显示,则显示窗体Form2
Form2.Show;
if (Msg.lParam=WM_RBUTTONDOWN) then
//如果按下的是鼠标右键,则显示弹出菜单
begin
GetCursorPos(p);
PopupMenu1.Popup(p.x,p.y);
end;
end;
//过程InstallIcon用来在托盘中安装图标
Procedure TForm1.InstallIcon;
var
IconData:TNotifyIconData;
begin
NormalIcon := TIcon.Create;
DisabledIcon := TIcon.Create;
//允许状态下的图标
NormalIcon.LoadFromFile('Normal.ico');
//禁止状态下的图标
DisabledIcon.LoadFromFile('Normal.ico');
IconData.cbSize := SizeOf(IconData);
IconData.Wnd := Handle;
IconData.UID := ICON_ID;
IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
IconData.uCallBackMessage := MI_ICONEVENT;
IconData.hIcon := NormalIcon.Handle;
//鼠标悬在托盘中对应的图标上时的提示信息
IConData.szTip := 'asdfghjkl';
Shell_NotifyIcon(NIM_ADD,@IconData);
end;
//过程UnInstallIcon用于卸载托盘中的图标
Procedure TForm1.UnInstallIcon;
var
Icondata : TNotifyIconData;
begin
IconData.cbSize := SizeOf(IconData);
IconData.Wnd := Handle;
IconData.uID := ICON_ID;
Shell_NotifyIcon(NIM_DELETE,@IconData);
end;
//在窗体Form1的OnCreate事件处理过程中作初始化工作,安装图标并隐藏主窗体
procedure TForm1.FormCreate(Sender: TObject);
begin
Status := True;
//安装图标
InstallIcon;
//改变图标为Normal状态
ChangeIcon(true);
//隐藏主窗体
ShowWindow(Application.Handle,SW_HIDE);
//在托盘中不显示程序图标
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
end;
//在窗体Form1的OnClose事件处理过程中作清除工作,卸载图标并释放图标资源
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnInstallIcon;
NormalIcon.Free;
DisabledIcon.Free;
end;//在窗体Form1的Onactivate事件处理过程中隐藏窗体
procedure TForm1.FormActivate(Sender: TObject);
begin
Form1.width := 0;
Form1.Height := 0;
ShowWindow(Application.Handle,SW_HIDE);
end;procedure TForm1.ccc1Click(Sender: TObject);
begin
mciSendString('set cdaudio door open wait',nil,0,Handle);
end;procedure TForm1.aaa1Click(Sender: TObject);
begin
ExitWindowsEx(EWX_REBOOT or EWX_POWEROFF,0);
end;procedure TForm1.bbb1Click(Sender: TObject);
begin
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF,0);
end;procedure TForm1.CDROM1Click(Sender: TObject);
begin
mciSendString('set cdaudio door closed wait',nil,0,Handle);
end;procedure TForm1.N1Click(Sender: TObject);
begin
Close;
end;end.
给多一点分,我告诉你一个地方你去DOWNLOAD一个例子和一个控件,保证好用,因为我们自己写出来的托盘好像占用系统资源比较多,这个好用!!!
http://www.ms2008.com/delphi/21.htm
用了之后,如果好的话,记得给我加分呀!!!!!!!!!
”unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus,ShellAPI{加入API},Mmsystem;Const
ICON_id = 1; //ICON的ID标志
MI_ICONEVENT = WM_USER + 1;//自定义ICON事件消息
type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
aaa1: TMenuItem;
bbb1: TMenuItem;
ccc1: TMenuItem;
CDROM1: TMenuItem;
N1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
procedure ccc1Click(Sender: TObject);
procedure aaa1Click(Sender: TObject);
procedure bbb1Click(Sender: TObject);
procedure CDROM1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
//正常和失效两种情况下图标
NormalIcon,DisabledIcon:TIcon;
Status:Boolean;//定义标志是“允许使用”还是“禁止使用”
Procedure InstallIcon;//声明过程InstallIcon用来在托盘中安装图标
Procedure ChangeIcon(s:Boolean);//声明过程ChangeIcon用于改变本程序以托盘中的图标
Procedure UnInstallIcon;//声明过程UnInstallIcon用于卸载托盘中的图标
//捕捉自定义消息MI_ICONEVENT的过程IconOnClick的声明
Procedure IconOnClick(var Msg:Tmessage);message MI_ICONEVENT;
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.DFM}Procedure TForm1.ChangeIcon(s:Boolean);//过程ChangeIcon用于改变本程序以托盘中的图标
var
IconData:TNotifyIconData;
begin
IconData.cbSize := SizeOf(IconData);
IconData.Wnd := Handle;
IconData.uID := ICON_ID;
if s=False then //禁止使用
begin
IconData.hIcon := DisabledIcon.Handle;
Status := False;
end
else
begin
IconData.hIcon := Normalicon.Handle;
Status := True;
end;
IconData.uFlags := NIF_ICON;
Shell_NotifyIcon(NIM_MODIFY,@IconData);
end;
//处理鼠标在托盘中对应的图标上的单击事件
Procedure TForm1.IconOnClick(var Msg:Tmessage);
var
p:TPoint;
begin
if ((Msg.lParam=WM_LBUTTONDOWN) and (Status=True)) then
//如果按下的是鼠标左键,并且允许显示,则显示窗体Form2
Form2.Show;
if (Msg.lParam=WM_RBUTTONDOWN) then
//如果按下的是鼠标右键,则显示弹出菜单
begin
GetCursorPos(p);
PopupMenu1.Popup(p.x,p.y);
end;
end;
//过程InstallIcon用来在托盘中安装图标
Procedure TForm1.InstallIcon;
var
IconData:TNotifyIconData;
begin
NormalIcon := TIcon.Create;
DisabledIcon := TIcon.Create;
//允许状态下的图标
NormalIcon.LoadFromFile('Normal.ico');
//禁止状态下的图标
DisabledIcon.LoadFromFile('Normal.ico');
IconData.cbSize := SizeOf(IconData);
IconData.Wnd := Handle;
IconData.UID := ICON_ID;
IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
IconData.uCallBackMessage := MI_ICONEVENT;
IconData.hIcon := NormalIcon.Handle;
//鼠标悬在托盘中对应的图标上时的提示信息
IConData.szTip := 'asdfghjkl';
Shell_NotifyIcon(NIM_ADD,@IconData);
end;
//过程UnInstallIcon用于卸载托盘中的图标
Procedure TForm1.UnInstallIcon;
var
Icondata : TNotifyIconData;
begin
IconData.cbSize := SizeOf(IconData);
IconData.Wnd := Handle;
IconData.uID := ICON_ID;
Shell_NotifyIcon(NIM_DELETE,@IconData);
end;
//在窗体Form1的OnCreate事件处理过程中作初始化工作,安装图标并隐藏主窗体
procedure TForm1.FormCreate(Sender: TObject);
begin
Status := True;
//安装图标
InstallIcon;
//改变图标为Normal状态
ChangeIcon(true);
//隐藏主窗体
ShowWindow(Application.Handle,SW_HIDE);
//在托盘中不显示程序图标
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
end;
//在窗体Form1的OnClose事件处理过程中作清除工作,卸载图标并释放图标资源
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnInstallIcon;
NormalIcon.Free;
DisabledIcon.Free;
end;//在窗体Form1的Onactivate事件处理过程中隐藏窗体
procedure TForm1.FormActivate(Sender: TObject);
begin
Form1.width := 0;
Form1.Height := 0;
ShowWindow(Application.Handle,SW_HIDE);
end;“