我看了msdn上面的文档,在 WebBrowser Application 中实现了
IDownloadManager::Download 和 IServiceProvider::QueryService,还是不行。哪位高人知道,请赐教!最好有示例,谢谢!

解决方案 »

  1.   

    http://msdn.microsoft.com/workshop/browser/ext/overview/downloadmgr.asp
    http://www.euromind.com/iedelphi/iedownload.htm
      

  2.   

    都看到了。
    delphi看不懂,下载了源代码需要其它组件才能运行。
    能不能帮忙用vc写个demo?谢谢!
      

  3.   

    主要是下载文件时,不调用IDownloadManager::Download,解决了这个问题就好办了。我的email:[email protected]
    谢谢!
      

  4.   

    ……
    你自己写一个IDownloadManager::Download的实现,然后注册,系统就会调用你的而不调用默认的
      

  5.   

    我添加了一个ATL Object,然后添加从IDownloadManager继承,再添加了Download的实现。
    这些都是在WebBrowse Application Project中。该如何注册?是手工吗?文档中说实现了IServiceProvider::QueryService就可以了。
      

  6.   

    我试了很多次,还是不行。
    请看看程序哪里有问题,程序如下:#include <DownloadMgr.h>/////////////////////////////////////////////////////////////////////////////
    // CDlMgr
    class ATL_NO_VTABLE CDlMgr : 
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<CDlMgr, &CLSID_DlMgr>,
    public IDispatchImpl<IDlMgr, &IID_IDlMgr, &LIBID_DOWNLOADLib>,
    public IDownloadManager
    {
    public:
    CDlMgr()
    {
    }DECLARE_REGISTRY_RESOURCEID(IDR_DLMGR)DECLARE_PROTECT_FINAL_CONSTRUCT()BEGIN_COM_MAP(CDlMgr)
    COM_INTERFACE_ENTRY(IDlMgr)
    COM_INTERFACE_ENTRY(IDispatch)
    COM_INTERFACE_ENTRY(IDownloadManager)
    END_COM_MAP()// IDlMgr
    public:
            STDMETHOD(Download)( 
                /* [in] */ IMoniker *pmk,
                /* [in] */ IBindCtx *pbc,
                /* [in] */ DWORD dwBindVerb,
                /* [in] */ LONG grfBINDF,
                /* [in] */ BINDINFO *pBindInfo,
                /* [in] */ LPCOLESTR pszHeaders,
                /* [in] */ LPCOLESTR pszRedir,
                /* [in] */ UINT uiCP)
    {
    MessageBox(NULL, _T("dddddd"), _T("dddd"), MB_OK);
    return S_OK;
    }
    };注册文件:
    HKCR
    {
    Download.DlMgr.1 = s 'DlMgr Class'
    {
    CLSID = s '{F9D499F5-4E51-48E2-A615-5723FE2CE62C}'
    }
    Download.DlMgr = s 'DlMgr Class'
    {
    CLSID = s '{F9D499F5-4E51-48E2-A615-5723FE2CE62C}'
    CurVer = s 'Download.DlMgr.1'
    }
    NoRemove CLSID
    {
    ForceRemove {F9D499F5-4E51-48E2-A615-5723FE2CE62C} = s 'DlMgr Class'
    {
    ProgID = s 'Download.DlMgr.1'
    VersionIndependentProgID = s 'Download.DlMgr'
    ForceRemove 'Programmable'
    InprocServer32 = s '%MODULE%'
    {
    val ThreadingModel = s 'Apartment'
    }
    'TypeLib' = s '{BE0B9343-94F9-4C4A-8D1D-AA88E8C8B4C5}'
    }
    }
    }HKLM
    {
    NoRemove SOFTWARE
    {
    NoRemove Microsoft
    {
    NoRemove 'Internet Explorer'
    {
    DownloadUI = s '{F9D499F5-4E51-48E2-A615-5723FE2CE62C}'
    }
    }
    }
    }HKCU
    {
    NoRemove SOFTWARE
    {
    NoRemove Microsoft
    {
    NoRemove 'Internet Explorer'
    {
    DownloadUI = s '{F9D499F5-4E51-48E2-A615-5723FE2CE62C}'
    }
    }
    }
    }