如何激活和杀死某个窗口?(200分)

  • 主题发起人 主题发起人 php2
  • 开始时间 开始时间
P

php2

Unregistered / Unconfirmed
GUEST, unregistred user!
  如何激活和杀死某个窗口?
  在用IE5浏览的时候,经常会弹出一个广告框,如何用Delphi定
时检测系统,发现新的窗口出现就杀掉它,并激活原来的正在浏览的窗
口?
  用
function FindWindow(ClassName: pchar; WindowName: pchar): hWnd;
  好象不符合要求。
  我的思路是首先把系统正在运行的窗口找出来,然后定时比较,再
杀。
  请写出较详细的源代码。
 
对 IE 其窗口类为:IEFrame / CabinetWClass。
EnumWindows 可以把窗口枚举出来。
SetActiveWindow 可以激活某窗口。
GetLastActivePopup 得到上一个活动窗口。
范例可参考深度历险 FindWin.Zip。
 
DestroyWindow 可以杀掉窗口。
 
; 用 FindWindow(ClassName: pchar; WindowName: pchar)
找出窗口的句柄,然后:
sendmessag(win_hwnd,win_close,0,0)
 
可以把一些“著名”的广告窗口记下来,然后通过findwindow..按照
Victortim兄弟的方法。。。
 
  IEFrame 和 CabinetWClass 有什么区别?
  用上面的方法可不可以知道并杀死“非法操作”窗口?
 
作一个bho,出现这种弹出窗口的时候,会产生一个 onnewwindow事件,在这个
事件里添加代码,得到窗口句柄然后一切就都很好办了。可以用destroywindow
也可以直接用ishellwindow接口方法来关它
 
大虾们:
  不要说得太复杂,你们看看这个问题值200分就知道我是何等的菜鸟。
  究竟bho是什么???
  最好有源程序。
 
IEFrame 和 CabinetWClass 有什么区别?
这是用 WinSight32 跟到的,不大清楚有何区别,可能是 IEFrame 是主窗口,
CabinetWClass 是经由主窗口而生成的窗口。 ···

用上面的方法可不可以知道并杀死“非法操作”窗口?
知道窗口句柄,应该可以用 DestroyWindow 杀掉。
 
好象有这种工具
叫什么来着?
 
>好象有这种工具
>叫什么来着?

上华军找找吧
 
我需要的是自己编程。学Delphi!
 
附加功能 将问题提前
 
思路这样:
一,如果不想知道窗口的标题.
1.使用钩子函数,来得知创建窗口的消息.
2.判断新建窗口的类是否为 CabinetWClass ,如果是,就kill
二如果想知道窗口的标题,可以判断是否为有用的窗口.
使用findwindow命令
 
php2:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
ph2: 一般广告窗口没有工具栏,我是利用这点将它关闭。
代码如下,希望能给你一点帮助:)
procedure TForm1.Timer1Timer(Sender: TObject);
var
hwnd: Integer;
hchild: Integer;
buf: array[0..1024] of Char;
begin
hwnd := GetTopWindow(0);
repeat
GetClassName(hwnd, buf,1023);
if StrPas(buf)='CabinetWClass' then
begin
hchild := FindWindowEx(hwnd,0,'WorkerA',nil);
if (GetWindowLong(hchild,GWL_STYLE) and WS_VISIBLE)<>WS_VISIBLE then
SendMessage(hwnd,WM_SYSCOMMAND,SC_CLOSE,0);
end;
hwnd := GetNextWindow(hwnd,GW_HWNDNEXT);
until hwnd=0;
end;
 
不要用FindWindow!
不要用Timer!
用BHO
elan已经说了一半了。
到这里http://www.intelligo.net/iedelphi/找BHO的例子。
到这里http://eagleboost.myrice.com找IE的Automation控件,
如果你对IE编程熟悉的话,一切就搞定了,
如果你对IE编程不熟悉,http://eagleboost.myrice.com也有教程,
或者给我来信。
http://eagleboost.myrice.com是我的主页。
 
后退
顶部