200 分 如何让程序 禁用.我指定的网址.即做个类似 受信任的站点.受限制的站点的程序,最好能给个例子 ( 积分: 50 )

  • 主题发起人 主题发起人 klmyzgl
  • 开始时间 开始时间
K

klmyzgl

Unregistered / Unconfirmed
GUEST, unregistred user!
如何让程序 禁用.我指定的网址.即做个类似 受信任的站点.受限制的站点的程序,最好能给个例子
 
如何让程序 禁用.我指定的网址.即做个类似 受信任的站点.受限制的站点的程序,最好能给个例子
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3075193 拿分地址
 
浏览器控件有个事件,WebBrowser1_BeforeNavigate2 的,就是“在浏览之前”事件,在这里处理是否继续。
 
朋友我是控制IE ,不是写浏览器,能给个具体的例子么
 
我自己顶
 
直接在host文件里定义啊,
C:/WINDOWS/system32/drivers/etc 下的host文件里写上:
127.0.0.1 www.163.com

这样不就行了吗?等你程序退出时,还原成原来的样子就不影响正常上网了。
 
老大这个我知道,有没有更好的办法,如何让IE上我指定的网站。
 
我自己顶
 
利用IEHelpher,也就是BHO技术,具体实现,可以参考《秋风广告拦截器》源代码
 
秋风广告拦截器 在那里有下载的
 
金卡绣球jk8.com
说的没有错。
那样并不是在写浏览器。
不知道你对VC如何?有本书《VC网络通信编程实用案例精选》124页有原理介绍和例子程序。如果你会VC的话可以看看。
如果你会WDM的话那就更好办了,编写一个NDIS程序。别说是IE,其它的什么软件都别想上你禁止的网站。
 
回答的都不是很好,我在问问,如何把,IE 地址拦的 URL 内容导入到,TEXT
 
你可以先取得浏览器的句柄,然后得到其中地址栏的句柄,再然后就可以得到地址栏里面的内容,不但IE,而且其他常见的浏览器一并解决掉了。关键代码就给你了吧。
不过这是不是根本方法,根本方法还是截包。
其中的filter是个函数,就是将所得的地址信息与你指定的信息进行比较;form1.newurl.Text就是你指定要转向的地址内容,发个消息过去模拟地址填入然后回车的动作就可以了

function EnumChildProc(hwnd:HWND;IParam:LPARAM):bool;stdcall;
var
buf:array[0..250] of char;
rsize:integer;
begin
result:=true;
Getclassname(hwnd,buf,sizeof(buf)); //取窗口类名
if (strpas(buf)='Edit') then
begin
rsize:=sendmessage(hwnd,WM_GETTEXT,sizeof(buf),integer(@buf));
if rsize>0 then
if strpas(buf)<>form1.newurl.Text then
if filter(buf) then
begin
sendmessage(hwnd,WM_SETTEXT,0,integer(form1.newurl.Text)); //设置地址栏字符串
postmessage(hwnd,WM_KEYDOWN,$D,$1c0001);
postmessage(hwnd,WM_KEYUP,$d,$c01c0001);
MessageDlg('您所浏览的内容已被管理员限制!',mtError,[mbOK],0); //提示警告信息
end;
result:=false;
end;
end;


var
fwnd:thandle;
buf2,buf:array[0..250] of char; //取类名的缓冲
begin
fwnd:=GetForegroundWindow;
Getclassname(fwnd,buf,sizeof(buf));
Getwindowtext(fwnd,buf2,sizeof(buf2));
if Dlg_forbid then
if strpas(buf)='#32770' then
SendMessage(fwnd,WM_CLOSE,0,0);
if (strpas(buf)='CabinetWClass') or (strpas(buf)='ExploreWClass') or (strpas(buf)='IEFrame') or (pos('Netscape',strpas(buf2))>0) or (pos('Opera',strpas(buf2))>0) or (pos('Tencent',strpas(buf2))>0) then
EnumChildWindows(fwnd,@enumchildproc,0);
end;
 
能不能给我个例子,浮生 ,我的邮件 KLMYZGL@163.COM我要是收到东西立即发分200,决不失言
 
呵呵,分数无所谓的了,只是这是我实验室的项目,拿不出来的。我给的代码应该已经够了,不是很难,楼主仔细看看就应该可以的:)
 
我自己顶,请各位前辈关注
 
我自己顶,请各位前辈关注
 
我自己顶,请各位前辈关注
 
我自己顶,请各位前辈关注
 
后退
顶部