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

有帮助吗?

解决方案

做这个AFAIK有点问题。

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

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

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top