在本人的《自動關閉資訊提示窗體的實作》中實作了利用線程來關閉不需要的窗體技術,它所實作的是關閉同一程式中的窗體,而有時是需要關閉不在一個程式中的窗體的。比如,現在所見到的“廣告殺手”(自動關閉廣告窗體的一個程式)。
實作關閉窗體的關鍵在于找到該窗體的句柄,之後就可以發送WM_CLOSE給該窗體實作窗體的關閉。下面就是一個典型的例子用來關閉指定窗體标題以及窗體類名稱的一個函數。
Procedure TForm1.Button1Click(Sender: TObject);
var
hCurrentWindow: HWnd;
szText: array[0..254] of char;
begin
hCurrentWindow := GetWindow(Handle, GW_HWNDFIRST);
while hCurrentWindow <> 0 do
begin
if GetWindowText(hCurrentWindow, @szText, 255)>0 then
begin
if StrPas(@szText))=’窗體标題’ then
if GetClassName(hCurrentWindow, @szText, 255)>0 then
if StrPas(@szText))=’窗體類名稱’ then
break;
end;
hCurrentWindow:=GetWindow(hCurrentWindow, GW_HWNDNEXT);
end;