procedure TForm1.FormCreate(Sender: TObject); begin showwindow(application.handle,sw_hide); setwindowlong(application.handle,gwl_exstyle, getwindowlong(application.handle,gwl_exstyle) or ws_ex_toolwindow and not ws_ex_appwindow); end; 有了以上代码,最小化以后,在任务栏就看不到了。自己试试吧
我以前用过,一句话 procedure TForm1.FormCreate(Sender: TObject); begin showwindow(application.handle,sw_hide); end;
showwindow(application.handle,sw_hide); 或 setwindowlong(application.handle,gwl_exstyle,getwindowlong(application.handle,gwl_exstyle) or ws_ex_toolwindow and not ws_ex_appwindow);
const
RSPSIMPLESERVICE = 1;
RSPUNREGISTERSERVICE = 0;
function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord;stdcall; external 'KERNEL32.DLL';procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterServiceProcess(GetCurrentProcessID, RSPSIMPLESERVICE);
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
RegisterServiceProcess (GetCurrentProcessID, RSPUNREGISTERSERVICE);
end;
可以在热键内隐藏进程!!但是可能你不需要。那就保留吧。
application.showmainform:=false;
隐藏我再找找
Application.ShowMainForm:=False;
Application.CreateForm(TForm1,Form1);
....................
ShowWindow(Application.Handle,SW_HIDE);
显示则相反.................
begin
showwindow(application.handle,sw_hide);
setwindowlong(application.handle,gwl_exstyle,
getwindowlong(application.handle,gwl_exstyle)
or ws_ex_toolwindow and not ws_ex_appwindow);
end;
有了以上代码,最小化以后,在任务栏就看不到了。自己试试吧
procedure TForm1.FormCreate(Sender: TObject);
begin
showwindow(application.handle,sw_hide);
end;
或
setwindowlong(application.handle,gwl_exstyle,getwindowlong(application.handle,gwl_exstyle) or ws_ex_toolwindow and not ws_ex_appwindow);
才可以,不然第二次让它show的时候状态栏里又有了
2.双击托盘图标时显示窗体(这里假设你已经将ntida.uCallbackMessage := MYmsg;(ntida是TNotifyIcondata类型,用于在托盘区加图标用的数据结构);const
mymsg = wm_user + 100; //自定义消息,用于处理用户在图标上点击鼠标的事件
iid = 100; //用户自定义数值,在TnotifyIconData类型全局变量ntida中使用
type
TForm1 = class(TForm)
......
private
//自定义消息处理函数,处理鼠标点击图标事件
procedure onmymsg(var message: tmessage); message mymsg;
public
{ Public declarations }
end;
var
Form1: TForm1;
ntida: TNotifyIcondata;
//用于增加和删除系统状态图标
implementation
{$R .DFM}
procedure TForm1.Onmymsg(var message: tmessage);
begin
if message.LParam = WM_LBUTTONDBLCLK then begin//如果双击显示窗口
//显示应用程序窗口
ShowWindow(Handle, SW_SHOW);
//在任务栏上显示应用程序窗口
ShowWindow(Application.handle, SW_SHOW);
SetWindowLong(Application.Handle, GWL_EXSTYLE,
not (GetWindowLong(Application.handle, GWL_EXSTYLE)
or WS_EX_TOOLWINDOW AND NOT WS_EX_APPWINDOW));
end;
message.Result := 0;
end
Application.Run;
前面加上
Application.ShowMainForm:=False;