• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 会IE插件编程的朋友请进来帮我解决一下问题BHO

会IE插件编程的朋友请进来帮我解决一下问题BHO

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 会IE插件编程的朋友请进来帮我解决一下问题BHO等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 会IE插件编程的朋友请进来帮我解决一下问题BHO
描述:

这个问题之前发过一次贴,但那个问题已经解决了,现在迎来另一个问题
http://topic.csdn.net/u/20080908/16/e7c6cc3f-ae78-454f-8b74-b1234d196b3f.html
问题是:
类继承接口如下,并实现了它们的方法

class ATL_NO_VTABLE CFlashFilter :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CFlashFilter, &CLSID_FlashFilter>,
public IDispatchImpl<IFlashFilter, &IID_IFlashFilter, &LIBID_AdBlockerLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IInternetProtocol,
public IInternetProtocolSink
BEGIN_COM_MAP(CFlashFilter)
COM_INTERFACE_ENTRY(IFlashFilter)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY_IID(IID_IInternetProtocol, IInternetProtocol)
COM_INTERFACE_ENTRY_IID(IID_IInternetProtocolSink, IInternetProtocolSink)
END_COM_MAP()
private:
CComPtr<IInternetProtocolSink> m_pProtocolSink;
CComPtr<IInternetBindInfo> m_pBindInfo;
CComPtr<IInternetProtocol>      m_pProtocol;

在Start方法中的代码

//存储IInternetProtocol、IInternetProtocolSink
m_pProtocolSink = pOIProtSink;
if ( m_pProtocolSink == NULL )
return S_FALSE;
m_pBindInfo     = pOIBindInfo;
HRESULT hr = m_pBindInfo->QueryInterface( IID_IInternetProtocol, (void**)&m_pProtocol );
ULONG Fetched;
// 获取网页地址
m_pBindInfo->GetBindString( BINDSTRING_URL, &m_pUrl, 1, &Fetched );

ReportData方法

STDMETHODIMP CFlashFilter::ReportData( DWORD grfBSCF, ULONG ulProgress, ULONG ulProgressMax) USES_CONVERSION;
// 存储网页代码
std::string ts = "";
char buf[1024] = {0};
HRESULT hr;
ULONG ReadTotal = 0;
do{
memset( buf, 0x0, sizeof(buf) );
                //m_pProtocolSink->ReportResult( S_OK, S_OK, NULL ); // 调用这个正确,可以执行
hr = m_pProtocol->Read( buf, sizeof(buf)-1, &ReadTotal ); // 出错,m_pProtoc指针不是空的,这时IE也死了
std::string temp(buf);
ts += temp;
}while ( (hr != S_FALSE) && (hr != INET_E_DOWNLOAD_FAILURE) && (hr != INET_E_DATA_NOT_AVAILABLE) );
_pProtocolSink->ReportData( grfBSCF, ulProgress, ulProgressMax ); // 直接调用这个也出错,IE死掉

请问高手这个问题该怎么解决,解决了另开贴再送分


解决方案1:

对象已经实现了IInternetProtoco接口,
成员函数里为啥还要 CComPtr<IInternetProtocol>      m_pProtocol;
啊

解决方案2:

msdn:
After your IInternetProtocolSink::ReportResult method is called, your application should call the IInternetProtocol::LockRequest method to lock the resource you are reading from the protocol handler. Then your application should call the IInternetProtocolRoot::Terminate method.

解决方案3:

只需要实现IInternetProtocol接口即可,无需实现IInternetProtocolSink,你搞复杂了。IInternetProtocolSink指针在Start里面会传给你,你保存下来备用。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 多线程共同调用同一个回调函数会有问题吗?
  • 2017-06-04 com的注册问题
  • 2017-06-04 TVITEMlParam的设值问题?
  • 2017-06-05 vs2005与VC60问题“'TCHAR[255]'to'PCHAR'”?
  • 2017-06-05 vs2008debug版本转为release后出错
  • 2017-06-04 wtl协同浏览
  • 2017-06-04 如何手动添加一个接口
  • 2017-06-05 谁用过Microsoft的Detours?为什么它截获不到标题栏和菜单上的TextOut等API呢?
  • 2017-06-05 调用LoadLibrary时,无法访问是什么原因?
  • 2017-06-05 COM接口如何对[out,retval]类型的VARIANT参数赋值?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 请教hookapi,初级问题。
    • 我用atl的controls中的CompositeControl,放了一个按钮?
    • 谁能告诉我这是怎么回事???郁闷死了!!1
    • dual双接口类型的com控件实现多接口
    • ????得到一个进程的ID用哪个API得到此进程句柄????
    • 如何在JSP中调用COM组件呀,各位大侠出手相助呀,谢谢先!
    • tooltip显示换行问题请教
    • 多线程的程序是否也容易产生文件开关读写的错误
    • wtl向导出现问题
    • CSDN上的大虾们,这个小问题值100分啊!!

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有