今天在做网络监控客户端程序的时候,想在客户端不显示自己的应用程序窗口,要不然谁愿意让你监控,是不是?人家一看到的话肯定关闭了,所以我想把我的应用程序隐藏起来,不那么容易被发现,这样就可以神不知鬼不觉的进行监控了,首先要解决的就是窗口的隐藏,今天写这篇文章就是要说这个内容,当然,我不是怎么高手,只是在做的过程中遇到了一些也许被很多人难以发觉的问题而导至久久不能完成任务,下面我们来谈谈吧!
只要说到窗口隐藏,很多人肯定想到用API函数的设置窗体属性函数:SetWindowLong,以下是两种方法:
第一种:
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);
ShowWindow( Application.Handle, SW_SHOW );
end;
第二种:
procedure TFormMain.FormCreate(Sender: TObject);
begin
{将程序的窗口样式设为TOOL窗口,可避免在任务条上出现}
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
end;
procedure TFormMain.FormPaint(Sender: TObject);
begin
Hide;
end;
这两种都可以实现,但是往往很多人用了之后都会说不能实现,而是在任务栏的上方出现了一个小窗口,只是不出现在任务栏上而已,这就是我们要说的问题,现在我可以告诉大家,这是跟你的窗口最大化最小化还是正常显示的属性有关,你只要把你的FORM的WINSTATE属性设为最大化,你再试试看,就不出现窗口了,这样问题就解决了吧!