Implemented IDownloadManager

原创 2005年08月11日 17:53:00

Implemented IDownloadManager

IDownloadManager有一个成员函数,原型如下,

HRESULT Download(         
 IMoniker *pmk,
    IBindCtx *pbc,
    DWORD dwBindVerb,
    LONG grfBINDF,
    BINDINFO *pBindInfo,
    LPCOLESTR pszHeaders,
    LPCOLESTR pszRedir,
    UINT uiCP
);

IMoniker,IBindCtx,BINDINFO,可能会比较麻烦,没关系,这里有现成的,
http://www.mvps.org/emorcillo/download/vb6/tl_ole.zip
(引用页,http://www.mvps.org/emorcillo/en/code/vb6/wbframe.shtml)
有源码,可以自己编译,然后那个odl文件这样写就行了,

interface IDownloadManager;
[
    odl,
    uuid(988934A4-064B-11D3-BB80-00104B35E7F9), // IID_IDownloadManager
]
interface IDownloadManager : IUnknown
{
    HRESULT Download(
        [in] IMoniker *pmk,         // Identifies the object to be downloaded
        [in] IBindCtx *pbc,         // Stores information used by the moniker to bind
        [in] LONG dwBindVerb,      // The action to be performed during the bind
        [in] LONG grfBINDF,         // Determines the use of URL encoding during the bind
        [in] BINDINFO *pBindInfo,   // Used to implement IBindStatusCallback::GetBindInfo       
        //[in] LPCOLESTR pszHeaders,  // Additional headers to use with IHttpNegotiate
        [in] long pszHeaders,
        //[in] LPCOLESTR *pszRedir,    // The URL that the moniker is redirected to
        [in] long pszRedir,
        [in] LONG uiCP              // The code page of the object's display name
    );
};

这里,我把LPCOLESTR pszHeaders 改为了 long pszHeaders,因为这个参数及另一个在这里用不着,所以这样改也无所谓
参考自 http://download.microsoft.com/download/6/8/3/683DB9FE-8D61-4A3C-B7B8-3169FF70AE9F/ie55_lib.exe

vb代码,需要Implements IServiceProvider,IDownloadManager然后在 IServiceProvider_QueryService中,

    If IsEqualGUID(guidService, IID_IDownloadManager) And _
        IsEqualGUID(riid, IID_IDownloadManager) Then
     
        Dim oDM As IDownloadManager
       
        Set oDM = Me
  odm.AddRef         
        MoveMemory ppvObject, oDM, 4&
   
    Else

        ' The service or interface is
        ' not supported
        Err.Raise E_NOINTERFACE
    End If

再有就是,IDownloadManager_Download中,

Private Sub IDownloadManager_Download(ByVal pmk As olelib.IMoniker, ByVal pbc As olelib.IBindCtx, ByVal dwBindVerb As Long, ByVal grfBINDF As Long, pbindinfo As olelib.BINDINFO, ByVal pszHeaders As Long, ByVal pszRedir As Long, ByVal uiCP As Long)
Dim tUrl$
Dim Cancel&

'获取下载地址
tUrl = SysAllocString(pmk.GetDisplayName(pbc, Nothing))

'取消下载的话,Cancel=1
If Cancel = 1 Then
Else
    Err.Raise S_OK
End If
End Sub


代码参考自,http://www.euromind.com/iedelphi/downloadmanager.htm

一些相关链接
HOW TO: Implement a Custom Download Manager
(http://support.microsoft.com/default.aspx?scid=kb;en-us;327865)Implementing
a Custom Download Manager
(http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/ext/overview/downloadmgr.asp)


lingll 
lingll2001@21cn.com
lingll.yeah.net
2005-8-11

定制Internet Explorer下载管理器

定制Internet Explorer下载管理器
  • hellochenlian
  • hellochenlian
  • 2014年12月25日 16:56
  • 1399

关于自定义webbroswer,禁止弹出文件下载窗口的方法

    前段时间我在逛CSDN的时候,看见有些人提出上述问题,而回复总是不甚理想,我本是是一个潜水者,但是不希望让更多的人为这个问题而纠结,我把实现的方法给需要帮助的人说说吧。    其实说来很简单,...
  • Bit_bbtt
  • Bit_bbtt
  • 2009年12月14日 13:25
  • 1165

定制Internet Explorer下载管理器

定制Internet Explorer下载管理器
  • hellochenlian
  • hellochenlian
  • 2014年12月25日 16:56
  • 1399

Junit4学习与使用

学习使用Junit4,既然使用最新版本了,就不要再考虑之前是如何使用的了,之前有听过junit但一直没有使用,现在开始学习使用junit4! 介绍就不说了,就是一个方便大家测试的插件! 现在使用Mye...
  • qqHJQS
  • qqHJQS
  • 2014年12月28日 21:42
  • 3354

C# Webbrowser 常用方法及多线程调用

设置控件的值 /// /// 根据ID,NAME双重判断并设置值 /// /// /// ...
  • wangyinlon
  • wangyinlon
  • 2017年01月26日 10:16
  • 1298

webbrowser学习(承接爬虫定制,邮箱内容爬取 QQ:3232937716)

在我们编写的程序中,如果想要实现对浏览器打开的网页进行监视、模拟操纵、动态提取用户输入、动态修改......等功能,那么请你抽出宝贵的时间,继续往下阅读。本文介绍的知识和示例程序都是围绕如何遍历 HT...
  • xiaoxiaoyu85
  • xiaoxiaoyu85
  • 2015年05月25日 20:08
  • 1003

VC++ webbrowser函数使用范例

/*============================说明部分=================================    实现一下函数需包含头文件   #include    ...
  • u012108436
  • u012108436
  • 2016年02月22日 22:30
  • 918

MFC调用WebBrowser控件直接编写javascript代码及其他WebBrowser相关技巧

在mfc操作网页的过程中,使用ActiveX控件
  • oHanTanYanYing
  • oHanTanYanYing
  • 2014年04月14日 23:34
  • 2362

WebBrowser常用属性方法介绍

WebBrowser 常用属性方法 ■■方法 ==============================  ▲GoBack    相当于IE的“后退”按钮,使你在当前历史列表中后退一项 ...
  • xtfnpgy
  • xtfnpgy
  • 2016年10月25日 20:54
  • 742

Webbrowser动态插入HTML元素

测试环境:vs2010sp1 Author: kagula@2015-04-29 前言:给自己看的,免得时间长了,忘记。 头文件片段(CMSHTMLDisableDragDispatch源码网上...
  • lee353086
  • lee353086
  • 2015年04月29日 09:26
  • 2323
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Implemented IDownloadManager
举报原因:
原因补充:

(最多只允许输入30个字)