如何找出IE中显示的“类型”文档

时间:2009-05-05 03:24:52

标签: c# internet-explorer bho

我正在使用c#为IE创建一个按钮,此按钮执行某些操作,这些操作都取决于文档是PDF文档。我试图设置一个警卫,以防止任何行动发生,如果文件类型不是PDF但不知道IE如何将文件交给adobe和读者负责。我正在使用SHDocWv看过WebBrowserClass对象并且不确定如何解决这个问题。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

做这个AFAIK有点问题。

IWebBrowser2 :: Type 属性的值取决于您安装的用于处理PDF的插件,因为某些插件会为PDF文件(如Adobe)创建HTML包装,因此您将获得“HTML”文档“作为类型和一些插件不执行此操作(如Foxit),因此您无法专门对此进行转发。

因此,如果您使用HTML包装器获得PDF,则可以使用 IHTMLDocument2 :: mimeType 来查找文档的确切类型(JPEG / GIF / PNG /等等。文件全部用HTML包装。浏览器)。但正如我所知,它也是不可靠的,例如在我的机器上它返回HTML文档的“Firefox文档”,因为.html文件与Firefox相关联:但我没有测试是否是这样的PDFs alos。

另一个选择是使用 GetUrlCacheEntryInfoEx API调用来获取存储文档的本地浏览器缓存中的文件,然后读取它(只有文件的开头,我认为只有前256个字节很重要)并使用刚读过的数据调用 FindMimeFromData ,它将返回mime类型。

答案 1 :(得分:0)

检查文档的mime类型或查看webbrowser的window.location.href ...如果正在显示pdf,您将能够找到它...

答案 2 :(得分:0)

另一个好方法是做以下事情......

1]将Document对象转换为IPersist,然后使用.GetClassID(..)提取CLSID。 2] pInvoke ProgIDFromCLSID来提取progId 3]将progID与已知的COM对象/应用程序匹配。