我在程序中想每隔30秒自動關閉指定窗口標題的窗口。如IE窗口,腳本提示錯誤窗口,上網時的下載工具提示等等
最簡單的方法:
procedure TForm1.Button1Click(Sender: TObject);
var
QQHWND:HWND;
begin
qqhwnd:=findwindow(nil,'QQ用戶登錄');
ShowWindow(QQHWND,sw_HIDE); // 這裏是隱藏指定窗口,同理, 將此代碼放在TImer事件中即可達到效果
end;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
procedure TForm1.Button2Click(Sender: TObject);
var
hWndClose: HWnd; //存儲指定的外部應用程序窗口句柄
str: String; //存儲指定的外部應用程序的窗口名
begin
str := inputBox('提示','請輸入應用程序窗口標題:',''); //獲取要關閉的應用程序窗口名
if str <> '' then
begin
hWndClose := FindWindow(nil, PChar(str)); //根據窗口名查找要關閉的窗口句柄
if hWndClose <> 0 then ////如果查找成功,則發送消息,關閉指定的窗口
SendMessage(hWndClose,WM_CLOSE,0,0)
else //否則,給出提示信息
ShowMessage('沒找到指定的應用程序,所以無法關閉!');
end;
end;
SendMessage(FindWindow(nil,'str'),WM_CLOSE,0,0); //精簡就是這樣
用FindWindow或者FindWindowEX都可以獲取窗口具柄,findwindow是頂級窗口句柄不獲取字窗口的,findwindowex則可以獲取子窗口的。