使用BHO,如何判断访问了一个新的页面?(100分)

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

satanmonkey

Unregistered / Unconfirmed
GUEST, unregistred user!
在只有一帧的页面很容易判断,现在的难点是有多帧的页面,名名是一页但
DoBeforeNavigate2方法被调用多次。且url参数都不同。 很难判断他们是在一页里。

不知道有什么方法能判断访问了一个新的页面?比如从www.sohu.com.cn跳到www.tom.com
 
呵呵,你是不是掉到BHO里爬不出来啦.
 
DoBeforeNavigate2哦,OnDocumentCompete,对于多Frame的要多次判断!
 
你可以用
procedure TForm1:WorkOnFrame(doc: IHTMLDocument2);
var
framewin2:IHtmlWindow2;
frameCol:IHtmlFramesCollection2;
i:Integer;
vi:OleVariant;
Frame: IDispatch;

begin
frameCol:=doc.Frames;
for i:=0 to frameCol.Length-1 do
begin
vi:=i;
frame:=frameCol.Item(vi);
frame.QueryInterface(IID_IHTMLWindow2,framewin2);
//richedit1.lines.add...
WorkOnFrame(framewin2.document);
end;
end;
的方法递归访问页面里的每一帧.
 
这个技术性的问题比较难解决,我在1年前也费了很大的劲。但是解决后很有成就
感,你自己可以试试!
如果你实在解决不了的话,我可以有偿提供原代码,代码是一个软件公司专业网站
反黄毒软件的BHO部分。
你可以回帖给我,我会和你联系!
 
呵呵,你把需求提详细一点.咱们一起尽力解决.免费,哈哈哈哈.
你如果能够得到每个Frame的话,再在上面做什么判断应该已经很容易了吧.
 
gsgs1199:你可以通过satanmonkey@sina.com联系我

LeeChange:我做了个程序,把ie所有下载的东西都存下来。
现在需要通过url来把这些资源分类。我试过BeforeNavigate2事件
在单帧的网页中没问题,但在多帧的网页中BeforeNavigate2事件被多次激发
就不能判断是否是浏览了个新的页面,现在需要的是只到怎么判断我是浏览了个新页面
比如从www.sina.com.cn跳到了news.sina.com.cn
而不是在一个页面中个各个帧中跳。
 
看来gsgs1199的东西真要卖一套了.呵呵.
 
哈!没注意看,原来是有偿的啊。
我只能给大富翁里的分。呵呵,这个东西写着玩的。
不值得出rmb啊。
呵呵。
 
你的意思是先存到本地再分类还是时时的检查并立即分类保存?
 
我要做的是实时的。就算存在本地也存在我这个问题。
 
既然你是写着玩的那我也就不浪费口舌了,那写不出来正好是对你的一个锻炼,
希望你能够把这个程序写好,为我国的软件业作出贡献。
 
gsgs1199:老大,不买你的代码,你也给点提示塞。
大家都是来大富翁混的。
呵呵。
下载在努力研究中,已经看到希望了。
呵呵。
 
呵呵,我也可以有偿提供代码,BHO或者SPI的都可以,¥3000!
 
SPI 我自己会

BHO 我也弄懂了, 只是该帖的问题有点烦人,不过估计快弄好了。

我可出不起钱啊,我还是学生,只有生活费。呵呵。
 
多来点人看看啊。
 
onNewWindow也可以
 
自己搞定了
放分。
 
多人接受答案了。
 
to:LeeChange
怎么发短消息啊?我刚才收到你的短消息
怎么回复你 ?
 
后退
顶部