Я хочу определить, установлен ли Adobe Reader с использованием VB6. Также, если будет обнаружено, что он не установлен, какое будет лучшее решение?
Определить, установлен ли Adobe Reader с помощью кода VB
Ответы (3)
Откройте «HKEY_LOCAL_MACHINE \ SOFTWARE \ Adobe \ Acrobat Reader» и просмотрите его подразделы. Таким образом вы получите номера версий установленных на этом компьютере «Adobe Reader» (ранее «Acrobat Reader»).
Вы также можете посмотреть http://pdftohtml.sourceforge.net/, если не можете найти приложение который может анализировать файлы PDF, вы также можете преобразовать его в HTML и получить к нему доступ с помощью веб-браузера, который доступен в большинстве операционных систем.
Существуют грубые способы (проверка файлов в каталоге Program files), но я бы рекомендовал вам объявить функции полного реестра (не getSetting из 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 с помощью оболочка ("начало" + OpenAppName)
Я бы проверил
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
Просматривая этот список, вы получите все установленные программы. Поиск записей реестра для конкретных приложений обычно работает, но иногда при удалении приложения они остаются позади.
Корень класса хорошо показывает, установлен ли какой-либо PDF Reader.
Кроме того, если вы просто хотите использовать приложение по умолчанию для обработки 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? Вы делаете то же самое, сделав на один шаг меньше.