监视窗体的创建(0分)

  • 主题发起人 主题发起人 yyok
  • 开始时间 开始时间
Y

yyok

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将一个窗体在刚创建后,还没有显示以前就干掉它。
 
用findwindow函数可以,但要知道类名或程序窗口的名字才行
 
procedure TForm1.FormActivate(Sender: TObject);
begin
form1.Close;
end;
 
同一楼上的!
 
不是自己的窗体,我是指别人的窗体。
 
找着Handle

SendMessage(Handle, 0, 0, WM_CLOSE);
 
建议用PostMessage,有时SendMessage关不了还把自己卡死了!
 
如何找到handle?
 
postmessage(handle,wm_quit,0,0);
 
如果你知道这个即将要创建的窗体的话
用sendmessage(handle,wm_colose,0,0);
postmessage是要进消息队列的,而sendmessage是直接和对方通话,建议用sendmessage

如果你不知道这个即将要创建的窗体的:
你可以监视系统中当前所有的窗体,当有新窗体创建的时候,你就杀掉他
var
i:integer;
processlist:array[1..1000] of string;
//当前系统所有的窗体handle
begin
i:=0;
try
HWnd0 := GetWindow(GetDesktopWindow, GW_CHILD);
repeat
GetWindowText(HWnd0, Str, 255);
if Str[0] <> #0 then
begin
prol:=Str;
inc(i)
end;
HWnd0 := GetWindow(HWnd0, GW_HWNDNEXT);
until HWnd0 = 0;
finally
end;
在form.create时取当前系统所有的窗体放在一个数组里/
后面定时检测就可以啦/




 
后退
顶部