我想检测是否使用VB6安装了Adobe Reader。如果检测到它没有安装,那么最佳解决方案是什么?
答案 0 :(得分:1)
有粗略的方法(检查程序文件目录上的文件),但我建议您在http://www.windowsdevcenter.com/pub/a/windows/2004/06/15/VB_Registry_Keys.html中声明完整注册表函数(不是来自vb的getSetting)并获取
HKEY_CLASSES_ROOT \ .PDF
如果有,那就有能读懂pdf的东西(这就是你想要的,对吧?)。
作为奖励, HKEY_CLASSES_ROOT \ .pdf \ OpenWithList 有一个列表(哇)已注册的应用程序打开.pdf文件...该列表上的键名是您可以从vb调用的程序使用 shell(“start”+ OpenAppName)
答案 1 :(得分:1)
访问“HKEY_LOCAL_MACHINE \ SOFTWARE \ Adobe \ Acrobat Reader”并枚举其子键。通过这种方式,您可以获得此计算机上存在的“Adobe Reader”(以前称为“Acrobat Reader”)安装的版本号。
您可能还要查看http://pdftohtml.sourceforge.net/ 如果找不到能够解析pdf文件的应用程序,您也可以将其转换为html并使用webbrowser访问它,该浏览器在大多数操作系统上都可用。
答案 2 :(得分:0)
我会检查
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
浏览该列表将为您安装所有程序。寻找特定于应用程序的注册表项通常会起作用,但偶尔在卸载应用程序时,它会将它们留在后面。
如果安装了任何PDF阅读器,则Class Root可以显示。
此外,如果您只想使用默认应用程序来处理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命令运行呢?你用更少的一步完成同样的事情。