获得地址栏URL

     最近一直在做一个BHO的插件,所需要的功能就是获得浏览器打开的网页的地址,将地址发送给后台,由后台进行校验,返回结果,这里记录一下怎样获得URL。

     在我的插件中,我主要使用了两个事件BeforeNavigate2和DownloadBegin,其实在BeforeNavigate2中就包含有URL 的参数,但是这个事件在进行刷新页面的时候并不能被处罚,所以和DownloadBegin,两个事件来组合使用,从而保证获得所有的页面URL。

    但是此时也出现了一个问题,因为在一个页面中会包含多个URL,在DownloadBegin中它会获得所有的URL,而不仅是地址栏中的URL,所以需要做判断,只获取第一次就可以了,我使用的方式是:

void STDMETHODCALLTYPE CObject::BeforeNavigate2(IDispatch  *pDisp, 
	VARIANT   *url, 
	VARIANT   *Flags, 
	VARIANT   *TargetFrameName, 
	VARIANT   *PostData, 
	VARIANT   *Headers, 
	VARIANT_BOOL   *Cancel)
{ 
	if (PROMPT_FLAG)
	{
		return;
	}
	//获得URL
	CComBSTR bstrURL;
	m_WebBrowser->get_LocationURL(&bstrURL);
	ATL::CString str = COLE2CT(bstrURL);
	string szUrl(str.GetBuffer());
	fnCheckUrl(szUrl);
}


用它在这两个事件中来获得URL,然后进行相应的检测。在BeforeNavigate2中可以直接用它的参数url,这个也是地址栏URL,但是在进行刷新和当前页面地址栏键入新的地址的的时候是不会触发的,因为我一直没有找到刷新的时候所能触发的事件,所以急用这个方法了,欢迎各位看官拍砖。要是哪位知道在当前页面地址栏输入新地址时候触发的事件,麻烦告知一声,我也修改一下。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值