WebBrowser实现IDownloadManager自定义下载管理的问题
大体代码如下:
public partial class Form1 : Form, IServiceProvider//窗体继承了IServiceProvider接口
private void Form1_Load(object sender, EventArgs e)
{
IntPtr p;
object objBrowser = axWebBrowser1.GetOcx();
AxWebBrowser.IServiceProvider ispBrowser = objBrowser as AxWebBrowser.IServiceProvider;
int ip = ispBrowser.QueryService(ref InterfaceGuid.SID_SProfferService, ref InterfaceGuid.IID_IProfferService, out p);
IProfferService ips = Marshal.GetObjectForIUnknown(p) as IProfferService;
ips.ProfferService(ref InterfaceGuid.IID_IDownloadManager, this, ref m_DownloadManagerCookie);
string strURI = "http://im.qq.com/qq/2010/standard_sp2/";
axWebBrowser1.Navigate(strURI);
}
public int QueryService(ref Guid guidService, ref Guid riid, out IntPtr ppvObject)//实现IServiceProvider接口的方法
{
int retVal = -1;
ppvObject = IntPtr.Zero;
if (guidService == InterfaceGuid.SID_SDownloadManager && riid == InterfaceGuid.IID_IDownloadManager)
{
IDownloadManager a = new DownloadManager(); //DownloadManager为实现了IDownloadManager接口的类
IntPtr pUnk = Marshal.GetIUnknownForObject(a);
retVal = Marshal.QueryInterface(pUnk, ref riid, out ppvObject);
Marshal.Release(pUnk);
}
return retVal;
}
因为DownloadManager类比较简单就是继承IDownloadManager接口,并实现了Download方法,这里就不贴代码了.
现在的问题是,点击下载可以触发QueryService的方法,但执行完QueryService里面的方法后,却不会触发DownloadManager类的Download方法,感觉哪里没有整对。但我自己又不太清楚,请大家帮我看看啊!谢谢了