c#IE插件BHO获取pdf

时间:2013-07-26 10:58:42

标签: c# internet-explorer pdf bho

我需要一些IE插件(浏览器助手对象)的帮助。

插件应该做什么:

如果用户点击后面带有pdf的链接,该插件应该调用计算机上安装的exe文件。 exe文件将检查PDF并打开默认的pdf应用程序或特殊的应用程序。

我做了什么:

我的BHO从我的IE开始。我用这个代码作为开头:
http://www.codeproject.com/Articles/19971/How-to-attach-to-Browser-Helper-Object-BHO-with-C
我禁用了所有的adobe插件,因此ie下载窗口显示出来。惠特这个代码,我可以解析HTML身体添加HTML标记等,但那不是我想要做的...

我的问题:

我不知道如何获取pdf。如果我直接调用pdf下载链接,则将站点对象的强制转换为InternetExplorer或WebBrowser对象失败。

public int SetSite(object site)
{
    if (site != null)
    {
        ieInstance = site as InternetExplorer;   
        ieInstance.DocumentComplete += new DWebBrowserEvents2_DocumentCompleteEventHandler(this.OnDocumentComplete);
    }
    else if (ieInstance != null)
    {
        ieInstance.DocumentComplete -= new DWebBrowserEvents2_DocumentCompleteEventHandler(this.OnDocumentComplete);
    }
    return 0;
}

public int SetSite(object site) { if (site != null) { ieInstance = site as InternetExplorer; ieInstance.DocumentComplete += new DWebBrowserEvents2_DocumentCompleteEventHandler(this.OnDocumentComplete); } else if (ieInstance != null) { ieInstance.DocumentComplete -= new DWebBrowserEvents2_DocumentCompleteEventHandler(this.OnDocumentComplete); } return 0; }

Document ='((SHDocVw.InternetExplorer)(ieInstance))。文档'抛出了'System.Runtime.InteropServices.COMException'类型的异常

有人能告诉我,我怎样才能抓住IE浏览器中的下载窗口?我知道在下载之前有一个事件,但是这个事件对我没有帮助。

1 个答案:

答案 0 :(得分:0)

你想要更广泛地实现什么目标?

当浏览器显示PDF文件时,您无法获取HTML文档实例,因为没有PDF文件 - 加载PDF对象而不是HTML呈现对象。

根据您要实现的目标,可能有更好的方法来实现它(最有可能是registering a MIME Filter用于application / pdf MIME类型)。