• 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 > [ATL/IE高手进]DISPID_FILEDOWNLOAD,下载管理器?

[ATL/IE高手进]DISPID_FILEDOWNLOAD,下载管理器?

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

佚名通过本文主要向大家介绍了dispid,c dispid,dispid newwindow3,atl,atl71.dll等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: [ATL/IE高手进]DISPID_FILEDOWNLOAD,下载管理器?
描述:

写了一个BHO截获点击IE超链接下载的消息,
同时屏蔽IE默认的下载管理器,弹出定制的下载管理器,
类似flashget,迅雷.
这里有三个问题相问:
1.sink DISPID_FILEDOWNLOAD,在定制的下载管理器cancel的时候,允许弹出IE下载管理器,用下面语句,
*pDispParams->rgvarg[0].pboolVal = VARIANT_FALSE; 
问题出来了,会弹出IE默认的下载管理器,但是不去sink DISPID_ONQUIT,直接退出,在debug的时候,引起IE break,这是为什么呢?
2.通过IE收藏菜单点击的链接也sink DISPID_FILEDOWNLOAD,有时候是起定制的下载管理器,有什么办法能屏蔽这种操作也能起下载管理器吗?
3.在频繁点击链接的时候,偶尔会引起IE崩溃,review了好多次代码,不知道究竟什么地方引起IE break,通常引起IE break的原因有哪些呢?
case DISPID_FILEDOWNLOAD:
{
if( pDispParams->cArgs > 0 )
{
BSTR bstrURL = NULL;
HRESULT hr = m_pWebBrowser->get_LocationURL( &bstrURL );
if( S_OK == hr )
{
*pDispParams->rgvarg[0].pboolVal = VARIANT_TRUE;
if(TRUE == RunAppToDownload()) // to start my download manager
{
if(m_bDownload == TRUE) //a flag if my download manager is run
*pDispParams->rgvarg[0].pboolVal = VARIANT_TRUE;//disable ie download manager
else
*pDispParams->rgvarg[0].pboolVal = VARIANT_FALSE;//enable ie download manager
}
else
*pDispParams->rgvarg[0].pboolVal = VARIANT_FALSE;
}
}
}
break;


解决方案1:

同步这段代码

解决方案2:

这样不好定位问题,建议使用插入法调试(可以使用messagebox),跟一下你的BHO执行到哪里?


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

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

  • 请问怎样在DISPID_AMBIENT_DLCONTROL中实现下载控制?
  • 在DISPID_BEFORENAVIGATE2事件中如何判断是否为IFRAME事件?
  • 请教各位,如何修改控件暴露的接口方法的dispid,具体描述见内。
  • 想截取鼠标在IE工作区左键点击事件,可是每次都截取到超过5次DISPID_HTMLELEMENTEVENTS_ONCLICK事件
  • DISPID起什么作用?
  • 获取IE弹出窗口的问题(DISPID_NEWWINDOW2)
  • 还有的DISPID叫啥名字呢?
  • DISPID_BEFORENAVIGATE2事件
  • 关于DISPID_ONADDRESSBAR
  • 编译的时候说:DISPID_BEFORENAVIGATE2没有定义

相关文章

  • 2017-06-04 IGlobalInterfaceTable创建失败来帮帮忙哈
  • 2017-06-04 vc++60打包的安装程序在没有安装VC的机器上打不开mdbaccess文件
  • 2017-06-04 关于gif89dllATL库在richedit中的使用问题,急
  • 2017-06-04 在Activez控件中WM_CHAR消息怎么不响应啊!
  • 2017-06-05 vc调用com组件的时候出现问题
  • 2017-06-05 网上的AMCap摄像头录制没有压缩视频和音频,要怎么加上这个FITER
  • 2017-06-04 生成控件包容类的问题!
  • 2017-06-04 m_thunkInitGetWindowProc,this;是什么意思?
  • 2017-06-05 急!急!急!Dll编译错误。。。。。高人指教
  • 2017-06-05 ActiveX

文章分类

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

最近更新的内容

    • 怎么调用不了用MFC写的方法呢,请大家帮忙,已经搞好了久了,郁闷啊,
    • 判断是否在浏览器上单击了鼠标
    • 在ISAPI编程中调用FindWindowSendMessage的API函数不起作用
    • 这个线程是工作者还是UI线程?
    • 请问使用什么技术可以对DVD截取转换?
    • 谁帮我看一下有什么问题
    • 线程函数前是否可以添加static修饰符?
    • 请问在VC中如何调用本地的ActiveXExe?
    • 调用exe组件
    • 如何用vc++中的容器类(OLE技术实现在窗口中插入一幅图片(注:不一定是位图)?

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

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