使用VB代码检测Adobe Reader是否已安装

3

我想使用VB6检测Adobe Reader是否已安装。如果检测到未安装,最好的解决方案是什么?


2
需要使用Adobe PDF阅读器吗?还是您正在寻找任何类型的PDF查看器? - dummy
3个回答

1

访问"HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader"并枚举其子键。通过这种方式,您可以获取计算机上存在的“Adobe Reader”(以前称为“Acrobat Reader”)安装的版本号。

您还可以查看http://pdftohtml.sourceforge.net/ 如果找不到能够解析pdf文件的应用程序,则可以将其转换为html并使用大多数操作系统上可用的Web浏览器访问它。


1

有一些粗糙的方法(检查Program Files目录中的文件),但我建议您声明完整的注册表函数(而不是从vb获取设置),如http://www.windowsdevcenter.com/pub/a/windows/2004/06/15/VB_Registry_Keys.html并提取。

HKEY_CLASSES_ROOT\.pdf

如果有这样的东西,那么就有能够读取pdf文件的工具(这正是你想要的,对吗?)。
此外,“HKEY_CLASSES_ROOT\.pdf\OpenWithList”下有一个注册了打开.pdf文件的应用程序列表(哇噻!)...该列表中的键名是你可以使用vb通过“shell("start "+ OpenAppName)”来调用的程序。

0

我会进行检查

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\

浏览该列表将提供您安装的所有程序。通常查找特定于应用程序的注册表项可以起作用,但有时在卸载应用程序时,它们会被遗留下来。

类根适用于显示是否安装了任何 PDF 阅读器。

此外,如果您只想使用默认应用程序来处理 PDF,可以使用以下方法。(这是 VBScript,但在 VB6 上应该可以同样使用)

File = <PDF FILE HERE>
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run Chr(34) & File & Chr(34)

回复评论

在vb6中访问注册表有几种方法,RegRead是其中之一。WMI是另一种方式。我会使用WMI,因为你可以轻松枚举子键。

读取HKEY_CLASSES_ROOT没有问题,但如果你只是要启动默认的pdf处理程序,为什么不使用上面的WshShell.Run命令直接运行它呢?这样做可以少一步操作,实现相同的效果。


但是如何在VB(非.NET)中访问注册表呢? 除此之外,还有几种可能性......你的方法对我来说有点过于牵强,因为在HKEY_CLASSES_ROOT\中,您可以检索所有适合启动/处理文档的应用程序/类。 - jpinto3912

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接