調試,卻發現原來廣告窗口同樣具有上圖的結構,這也讓我的程序設計進程停滯不前,經過兩個晚上的思考,我終於想到另一個API函數:GetWindowRect,它可以得到一個窗口的物理尺寸結構.馬上調試,終於發現:
1.廣告窗口的WorkerA類和Shell DocObject VIEw類的rect.top的值是相同的;
2.正常IE窗口的WorkerA類和Shell DocObject VIEw類的rect.top的值是不相同的;
馬上更改代碼,代碼如下:
procedure TForm1.Timer1Timer(Sender: TObject);
var
mainHD,WorkAHD,VIEwHD:THandle;
y_workA,y_vIEw:integer;
rect1,rect2:TRect;
begin
// Kill AD.
mainHD:=FindWIndowEx(0,0,'CabinetWClass',nil);
if Mainhd<>0 then
begin
WorkAHD:=FindWindowEx(Mainhd,0,'WorkerA',nil);
GetwindowRect(WorkAHD,rect1);
y_workA:=rect1.top;
ViewHD:=FindWindowEx(mainHD,0,'Shell DocObject VIEw',nil);
if vIEwHD<>0 then ////注1:
begin
GetwindowRect(VIEwHD,rect2);
y_vIEw:=rect2.top;
if y_VIEw-y_WorkA<5 then PostMessage(Mainhd,WM_CLOSE,0,0);
end;
end;
end;