关于IE的控制(250分)

  • 主题发起人 主题发起人 shiner
  • 开始时间 开始时间
S

shiner

Unregistered / Unconfirmed
GUEST, unregistred user!
我想写一个关于控制IE浏览器的程序,现有一点问题请教各位高手:
1.如何检测系统中有IE浏览器打开了?
2.如何检测IE处于当前窗口?
3.如何检测IE浏览的网站是不健康的网站?
4.检测到了某个IE窗口打开的不健康的网站,如何将其关闭掉?
5.怎样设置IE的默认页,并将IE设置项中设置主页的那个地方灰掉?
请各位不惜赐教!!!!!每个问题50分!
欢迎大家到我的网站做客!!http://nwolfsoft.myetang.com
 
怎么没高手啊?
 
1.
var
; IEHWND:hWnd;
; IECaption:string;
; bHaveIE:Boolean;
; sIETitle:string;// ;sIETitle:='Microsoft Internet Explorer';

; function EnumWindowsProc(HWND:hWnd;param:pointer): Boolean; stdcall;

function EnumWindowsProc(HWND: hWnd; param:pointer): Boolean;
var buffer:array[0..255] of Char;
begin
; GetWindowText(hWnd,buffer,256);
; if StrComp(buffer,PChar(sIETitle)>0 then
; ;begin
; ; ; bHaveIE:=True;
; ; ; IEHWND:=hWnd;
; ; ; StrCopy(IECaption,buffer);
; ;end;
; Result:=True;
end;

调用:EnumWindows(@EnumWindowsProc,0);

2.取得当前窗口,判断其窗口标题,若包含sIETitle,说明是IE窗口.

3.这个不太清楚怎么取得地址栏,你可用findwindow或sendmessage来取得.我记得以前CAKK
做过,我没有做过.若不行,可先用标题来判断,不过不准确.别的软件都是取得状态栏,然后根
据用户自己定义的那些站点资料来判断,若在其中,则是被禁站点.

4.PostMessage(IEHWND,WM_CLOSE,0,0); // 将要关闭的窗口指定给POSTMESSAGE,就可关闭这个窗口.

5.
; try
; ; bExist:=RegF.OpenKey('SOFTWARE/Microsoft/Internet Explorer/main',True);
; ; if bExist then
; ; begin
; ; ; sStartPage:=RegF.ReadString('Start Page');//得到起始页
; ; ; sIETitle:=RegF.ReadString('Window Title');//得到IE默认标题.
; ; end;
; except
; ; sStartPage:='www.sohu.com';
; ; sIETitle:='Microsoft Internet Explorer';
; end;

; RegF.Free;

procedure RestoreIE;
var Regf:TRegistry;
begin
; Regf:=TRegistry.Create;
; Regf.RootKey:=HKEY_CURRENT_USER;
; RegF.OpenKey('SOFTWARE/Microsoft/Internet Explorer/main',True);
; RegF.WriteString('Search Page',sStartPage);//改写Search Page,一般这个与默认首页一样.
; RegF.WriteString('Start Page',sStartPage);//改写默认首页.
; RegF.CloseKey;
; RegF.Free;
end;

禁止或允许用户修改IE首页:
运行注册表编辑器(开始菜单-运行-regedit-确定), 打开
[HKEY_CURRENT_USER/Software/Policies/Microsoft/Internet Explorer/Control Panel],
其实一般此键是不存在的, 只存在[HKEY_CURRENT_USER/Software/Policies/Microsoft],
所以后面一截你要自己建立, 主键建立完后在Control Panel键下新建一个DWORD值数据, 键
名为HOMEPAGE(不分大小写), 键值为1. 此时你打开IE属性时可以发现它改首页设置的部分
已经不可用了. 当然如果你想先指定主页的话可以把HOMEPAGE的值改为0或删除它, 然后修
改主页设置, 再把HOMEPAGE改回来即可

这部分,建议你看看这个贴:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=585937
 
zhangkan兄,已经写得很详尽了。
 
还有3.4项没人回答呀?
 
to:zhangkan
如果sIETitle:<>'Microsoft Internet Explorer';呢?
现在好多网站可以把你的浏览器标题改了
 
你到注册表'SOFTWARE/Microsoft/Internet Explorer/main/Window Title'去看三,那只是
微软默认的标题,你可以自己更改,也可以就将那儿的字串读出来作为你现在IE窗口的标题
呀.我在第5项不是已经写了.
5.
; try
; ; bExist:=RegF.OpenKey('SOFTWARE/Microsoft/Internet Explorer/main',True);
; ; if bExist then
; ; begin
; ; ; sStartPage:=RegF.ReadString('Start Page');//得到起始页,如果已经被改了,当然就是改了之后的了.
; ; ; sIETitle:=RegF.ReadString('Window Title');//得到IE默认标题.//这就是你当前的IE标题,哪怕已经改成别的了,你可以改回来,也可以就以此做参考.
 
快给zhangkan大侠加分!
 
No1,2可以使用SHDocVw的接口ShellWindowsEvents中的WindowRegistered,WindowRevoked,
就可以用事件驱动的方式获得当前系统中的IEs列表.然后使用GetForegroundWindow函数返回句柄,
与IEs列表中比较,就可确知是否有IE是当前窗口
 
zhangkan:不错,谢谢你
 
后退
顶部