天天看點

線程中關閉窗體的實作

在本人的《自動關閉資訊提示窗體的實作》中實作了利用線程來關閉不需要的窗體技術,它所實作的是關閉同一程式中的窗體,而有時是需要關閉不在一個程式中的窗體的。比如,現在所見到的“廣告殺手”(自動關閉廣告窗體的一個程式)。

      實作關閉窗體的關鍵在于找到該窗體的句柄,之後就可以發送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;

繼續閱讀