如何把一个窗口缩小到右下角的任务栏? 而不在其他地方显示,我找不到相应的函数,请给出源程序,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 const wm_traynotify=wm_user+100; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } procedure myproc(var message:tmessage); message wm_traynotify; public { Public declarations } end;vartnd:totifyicondata;implementation{$R *.dfm}procedure tform1.myproc(var message:tmessage);beginif message.lparam=wm_lbuttondown thenbeginshell_notifyicon(nim_delete,@tnd);form1.Show;end;procedure TForm1.Button1Click(Sender: TObject);begintnd.cbSize:=sizeof(tnd);tnd.Wnd:=self.Handle;tnd.uID:=0;tnd.uFlags:=nif_message or nif_tip or nif_icon;tnd.uCallbackMessage:=wm_traynotify;tnd.hIcon:=application.Icon.Handle;tnd.szTip:='my soft';shell_notifyicon(nim_add,@tnd);form1.Hide;end; unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus,shellapi;const ICON_ID = 1; MI_ICONEVENT = WM_USER + 1;type TForm1 = class(TForm) PopupMenu1: TPopupMenu; AppItem: TMenuItem; exit: TMenuItem; yesorno: TMenuItem; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormActivate(Sender: TObject); procedure AppItemClick(Sender: TObject); procedure exitClick(Sender: TObject); procedure yesornoClick(Sender: TObject); private { Private declarations } NormalIcon, DisabledIcon:TIcon; Status:Boolean; // 标识“允许使用”还是“禁止使用” procedure InstallIcon; procedure ChangeIcon(s:Boolean); procedure UnInstallIcon; procedure IconOnClick(var msg: TMessage); message MI_ICONEVENT; public { Public declarations } end;var Form1: TForm1;implementationuses Unit2;{$R *.DFM}procedure TForm1.ChangeIcon(s:boolean);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; AppItem.Enabled:=False; end else // 允许使用 begin IconData.hIcon := Normalicon.Handle; Status:=True; AppItem.Enabled:=True; end; IconData.uFlags := NIF_ICON; Shell_NotifyIcon(NIM_MODIFY, @IconData);end;procedure TForm1.InstallIcon; // 安装图标var IconData: TNotifyIconData; AppPath: string;begin AppPath:=ExtractFileDir(Application.ExeName); NormalIcon := TIcon.Create; DisabledIcon := TIcon.Create; NormalIcon.LoadFromFile( AppPath+'\'+'gt1.ico' ); // 允许使用状态下的图标 DisabledIcon.LoadFromFile( AppPath+'\'+'gt2.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 := '这是任务栏的状态指示区上加图标的例程'; Shell_NotifyIcon( NIM_ADD, @IconData );end;procedure TForm1.UnInstallIcon; // 卸载图标var IconData: TNotifyIconData;begin IconData.cbSize := SizeOf( IconData ); IconData.Wnd := Handle; IconData.uID := ICON_ID; Shell_NotifyIcon( NIM_DELETE, @IconData );end;procedure TForm1.IconOnClick(var msg:Tmessage);var p : TPoint;begin // 如果按下的是鼠标左键,并且允许显示,则显示Form2 if ( (msg.lParam = WM_LBUTTONDOWN) and (Status=True) ) then Form2.Show; // 如果按下的是鼠标右键,则显示弹出菜单 if (msg.lParam = WM_RBUTTONDOWN) then begin GetCursorPos( p ); PopupMenu1.Popup(p.x ,p.y ); end;end;procedure TForm1.FormCreate(Sender: TObject);begin // 安装图标并隐藏主窗体 Status:=True; InstallIcon; ChangeIcon( True ); ShowWindow( Application.Handle,SW_HIDE ); SetWindowLong( Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW );end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin // 卸载图标并释放图标资源 UnInstallIcon; NormalIcon.Free; DisabledIcon.Free;end;procedure TForm1.FormActivate(Sender: TObject);begin // 隐藏Form1 注意FORM1的Borderstyle设置为bsNone Form1.width:=0; Form1.Height:=0; ShowWindow( Application.Handle, SW_HIDE );end;procedure TForm1.AppItemClick(Sender: TObject);begin Form2.Show; showmessage('ok');end;procedure TForm1.exitClick(Sender: TObject);begin Close;end;procedure TForm1.yesornoClick(Sender: TObject);begin if(Status=True)then begin ChangeIcon( False ); yesorno.Caption:='允许使用(&Y)'; end else begin ChangeIcon( True ); yesorno.Caption:='禁止使用(&D)'; end;end;end. http://www.csdn.net/cnshare/soft/12/12349.shtm 有关变量调用问题 关于两个函数的使用; 解决了就给分 如何向自身程序写入数据??????????????????????//急!!!!! 请问如何模拟鼠标点击操作? 针打能打印图形吗?怎么打? 我如何用一个按钮来控制ScrollBox的滚动? ADO数据库简单问题? delphi clinetdataset的packetrecords属性怎么设置分页 怎么用画布画一个想按钮一样 各位有没有用过Delphi6自带的安装制作系统,好象对中文的支持非常臭,我用的时候如果有中文的话居然成了一个四方框 dbgrid问题,答对后立即给分,决不赊欠 怎样控制DllMain?在哪里可以编辑这个函数?
const
wm_traynotify=wm_user+100; type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure myproc(var message:tmessage);
message wm_traynotify;
public
{ Public declarations }
end;var
tnd:totifyicondata;implementation{$R *.dfm}procedure tform1.myproc(var message:tmessage);
begin
if message.lparam=wm_lbuttondown then
begin
shell_notifyicon(nim_delete,@tnd);
form1.Show;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
tnd.cbSize:=sizeof(tnd);
tnd.Wnd:=self.Handle;
tnd.uID:=0;
tnd.uFlags:=nif_message or nif_tip or nif_icon;
tnd.uCallbackMessage:=wm_traynotify;
tnd.hIcon:=application.Icon.Handle;
tnd.szTip:='my soft';
shell_notifyicon(nim_add,@tnd);
form1.Hide;
end;
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus,shellapi;const
ICON_ID = 1;
MI_ICONEVENT = WM_USER + 1;type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
AppItem: TMenuItem;
exit: TMenuItem;
yesorno: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
procedure AppItemClick(Sender: TObject);
procedure exitClick(Sender: TObject);
procedure yesornoClick(Sender: TObject);
private
{ Private declarations }
NormalIcon, DisabledIcon:TIcon;
Status:Boolean; // 标识“允许使用”还是“禁止使用”
procedure InstallIcon;
procedure ChangeIcon(s:Boolean);
procedure UnInstallIcon;
procedure IconOnClick(var msg: TMessage); message MI_ICONEVENT; public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.DFM}procedure TForm1.ChangeIcon(s:boolean);
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;
AppItem.Enabled:=False;
end
else // 允许使用
begin
IconData.hIcon := Normalicon.Handle;
Status:=True;
AppItem.Enabled:=True;
end;
IconData.uFlags := NIF_ICON;
Shell_NotifyIcon(NIM_MODIFY, @IconData);
end;procedure TForm1.InstallIcon; // 安装图标
var
IconData: TNotifyIconData;
AppPath: string;
begin
AppPath:=ExtractFileDir(Application.ExeName);
NormalIcon := TIcon.Create;
DisabledIcon := TIcon.Create;
NormalIcon.LoadFromFile( AppPath+'\'+'gt1.ico' ); // 允许使用状态下的图标
DisabledIcon.LoadFromFile( AppPath+'\'+'gt2.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 := '这是任务栏的状态指示区上加图标的例程';
Shell_NotifyIcon( NIM_ADD, @IconData );
end;procedure TForm1.UnInstallIcon; // 卸载图标
var
IconData: TNotifyIconData;
begin
IconData.cbSize := SizeOf( IconData );
IconData.Wnd := Handle;
IconData.uID := ICON_ID;
Shell_NotifyIcon( NIM_DELETE, @IconData );
end;procedure TForm1.IconOnClick(var msg:Tmessage);
var
p : TPoint;
begin
// 如果按下的是鼠标左键,并且允许显示,则显示Form2
if ( (msg.lParam = WM_LBUTTONDOWN) and (Status=True) ) then
Form2.Show;
// 如果按下的是鼠标右键,则显示弹出菜单
if (msg.lParam = WM_RBUTTONDOWN) then
begin
GetCursorPos( p );
PopupMenu1.Popup(p.x ,p.y );
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
// 安装图标并隐藏主窗体
Status:=True;
InstallIcon;
ChangeIcon( True );
ShowWindow( Application.Handle,SW_HIDE );
SetWindowLong( Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW );
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// 卸载图标并释放图标资源
UnInstallIcon;
NormalIcon.Free;
DisabledIcon.Free;
end;procedure TForm1.FormActivate(Sender: TObject);
begin
// 隐藏Form1 注意FORM1的Borderstyle设置为bsNone
Form1.width:=0;
Form1.Height:=0;
ShowWindow( Application.Handle, SW_HIDE );
end;procedure TForm1.AppItemClick(Sender: TObject);
begin
Form2.Show;
showmessage('ok');
end;procedure TForm1.exitClick(Sender: TObject);
begin
Close;
end;procedure TForm1.yesornoClick(Sender: TObject);
begin
if(Status=True)then
begin
ChangeIcon( False );
yesorno.Caption:='允许使用(&Y)';
end
else
begin
ChangeIcon( True );
yesorno.Caption:='禁止使用(&D)';
end;
end;end.