none
在BHO中如何获取HTTP连接的头信息? RRS feed

  • 问题

  • 最近在学习BHO,遇到不懂的问题,还请IE BHO达达指教~~
    之前,我先看了下异步可插入连接协议的一些内容,在自己练习编写的BHO中的SetSite函数里,做了如下操作:

    HRESULT hr = CoGetClassObject(CLSID_MyWebProtocolHandler, CLSCTX_SERVER, NULL, IID_IClassFactory, (void**)&m_spFactory);
    	if(hr==S_OK)
    	{
    		if(CoInternetGetSession(0, &m_spInternetSession, 0) == S_OK)
    		{
    			
    			hr = m_spInternetSession->RegisterNameSpace(m_spFactory, CLSID_MyWebProtocolHandler, _T("http"), 0, 0, 0);
    			//hr = m_spInternetSession->RegisterMimeFilter(m_spFactory, CLSID_MyWebProtocolHandler, _T("application/x-shockwave-flash"));		
    } }
    其中,CLSID_MyWebProtocolHandler类是另外一个ATL类,主要继承了接口IInternetProtocol、IInternetProtocolSink,
    问题(1):我发现如果注册了空间名"http",IInternetProtocolRoot的Start函数不管怎样都不会进入,如果是注册了空间名"https",却能进入,这是怎么回事?
    另外,注册为MimeFilter,Start函数都可以调到的。

    问题(2):我想获取到IE发起的HTTP连接的头信息(只需要读取,不需要添加新的信息),不仅仅是主页的,包括页面内的各种元素在下载时IE发起的HTTP连接,是不是还需要继承接口IHttpNegotiate?我试着继承了该接口,可是它的两个函数都不会进入,是不是还需要些什么东西?或者还有什么其它方法可以读到HTTP头信息吗?

    暂时就这两个问题,还望知道的朋友帮助解答下~谢谢!

    P.S:我的环境: WinXP + IE 6.0 + VS 2005
    2009年5月3日 14:35

答案