处理WM_SYSCOMMAND消息,隐藏窗体。或者使用TrayIcon控件,最小化到右下角。procedure Proc(var Msg:TMessage);message WM_SYSCOMMAND;procedure TForm1.Proc(var Msg: TMessage); begin if Msg.WParam=SC_MINIMIZE then begin Application.Minimize ; ShowWindow(Application.Handle,SW_HIDE); end else inherited; end;
procedure TForm1.FormCreate(Sender: TObject); begin SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);//隐藏任务栏图标 end;
谢谢楼上的老师。我是这样的,在程序启动时,要作出一个判断,如果条件为true,就隐藏窗体,也不让在状态栏显示;如果条件为false,则正常显示窗体运行。procedure TForm1.FormCreate(Sender: TObject); begin .... if MYTJ=true then begin Application.Minimize; Application.ProcessMessages; end; end;用上面代码,可以不显示窗体,但状态栏还是看到图标,我想什么都不显示,请问该如何做?
begin
if Msg.WParam=SC_MINIMIZE then
begin
Application.Minimize ;
ShowWindow(Application.Handle,SW_HIDE);
end
else inherited;
end;
begin
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);//隐藏任务栏图标
end;
begin
....
if MYTJ=true then
begin
Application.Minimize;
Application.ProcessMessages;
end;
end;用上面代码,可以不显示窗体,但状态栏还是看到图标,我想什么都不显示,请问该如何做?
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);//隐藏任务栏图标
还是不行,电脑下面还是显示图标
SetWindowLong(Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE)or WS_EX_TOOLWINDOW);
Application.Minimize;
begin
setwindowpos(application.handle,hwnd_top,0,0,0,0,swp_hidewindow);//不显示在系统栏
end;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
setwindowpos(application.handle,hwnd_top,0,0,0,0,swp_hidewindow);//不显示在系统栏
end;
end.或者:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
implementation
{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowLong(Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE)or WS_EX_TOOLWINDOW);
Application.Minimize;
end;
end.上面二个都不能实现隐藏
begin
Application.Minimize;
setwindowpos(application.handle,hwnd_top,0,0,0,0,swp_hidewindow)
end;点击按钮可以实现隐藏窗体的目的。请问:我如何才能在启动程序时就实现这个要求?
Forms,
Unit1 in 'Unit1.pas' {Form1};{$R *.res}begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.ShowMainForm := False;
Application.Run;
end.