How to implemente a Custom Download Manager? 我看了msdn上面的文档,在 WebBrowser Application 中实现了IDownloadManager::Download 和 IServiceProvider::QueryService,还是不行。哪位高人知道,请赐教!最好有示例,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://msdn.microsoft.com/workshop/browser/ext/overview/downloadmgr.asphttp://www.euromind.com/iedelphi/iedownload.htm 都看到了。delphi看不懂,下载了源代码需要其它组件才能运行。能不能帮忙用vc写个demo?谢谢! 主要是下载文件时,不调用IDownloadManager::Download,解决了这个问题就好办了。我的email:[email protected]。谢谢! ……你自己写一个IDownloadManager::Download的实现,然后注册,系统就会调用你的而不调用默认的 我添加了一个ATL Object,然后添加从IDownloadManager继承,再添加了Download的实现。这些都是在WebBrowse Application Project中。该如何注册?是手工吗?文档中说实现了IServiceProvider::QueryService就可以了。 我试了很多次,还是不行。请看看程序哪里有问题,程序如下:#include <DownloadMgr.h>/////////////////////////////////////////////////////////////////////////////// CDlMgrclass 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()// IDlMgrpublic: 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}' } } }} WSAAsyncSelect为什么会影响其它套接字 使用完成端口异步发送数据的问题,请各位指教 我想在窗口产生时就加载位图,但是位图显示出来很慢,请问怎么解决呢? 一个关于SDK中鼠标的问题 关于NetMeeting SDK的问题 请问如何让我的CListCtrl的某一行变成选择状态。 VC下用ODBC编程 想靠实力通过MCSD考试的进来看看吧 MFC开发的程序如何能够使用256色或真彩色的图标? 关于 winpcap库 使用的问题, 执行不下去了? 请教记录删除方法 如何把dialogue 从一个project导出,然后导入到另一个project中使用。
http://www.euromind.com/iedelphi/iedownload.htm
delphi看不懂,下载了源代码需要其它组件才能运行。
能不能帮忙用vc写个demo?谢谢!
谢谢!
你自己写一个IDownloadManager::Download的实现,然后注册,系统就会调用你的而不调用默认的
这些都是在WebBrowse Application Project中。该如何注册?是手工吗?文档中说实现了IServiceProvider::QueryService就可以了。
请看看程序哪里有问题,程序如下:#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}'
}
}
}
}