Detecta si Adobe Reader está instalado usando el código VB

Quiero detectar si Adobe Reader está instalado usando VB6. Además, si se detecta que no está instalado, ¿cuál sería la mejor solución?

0
¿Tiene que ser Adobe PDF Reader o está buscando cualquier tipo de PDF Viewer?
agregado el autor dummy, fuente

3 Respuestas

Hay maneras crudas (verificando los archivos en el directorio de archivos de programa), pero recomiendo que declare las funciones de registro completo (no getSetting de vb) como en http://www.windowsdevcenter.com/pub/a/windows/2004/06/15/VB_Registry_Keys.html y buscar

HKEY_CLASSES_ROOT \ .pdf

Si eso está ahí, hay algo capaz de leer archivos PDF (que es lo que quieres, ¿no?).

As a bonus, HKEY_CLASSES_ROOT\.pdf\OpenWithList has a list (wow) of registered applications that open .pdf files... the key names on that list are programs you can invoke from vb using shell("start "+ OpenAppName)

0
agregado

Acceda a "HKEY_LOCAL_MACHINE \ SOFTWARE \ Adobe \ Acrobat Reader" y enumere sus subclaves. Con esto, obtiene los números de versión de las instalaciones de "Adobe Reader" (anteriormente "Acrobat Reader") que existen en esta computadora.

También puede consultar http://pdftohtml.sourceforge.net/ . Si no puede encontrar una aplicación que pueda analizar archivos PDF, también puede convertirla a html y acceder a ella con un navegador web, que está disponible en la mayoría de los sistemas operativos.

0
agregado

Yo verificaría en el

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

Pasar por esa lista le dará todos los programas instalados. Buscar entradas de registro específicas de aplicaciones generalmente funcionará, pero ocasionalmente al desinstalar una aplicación, las dejará atrás.

El Class Root es bueno para mostrar si hay algún lector de PDF instalado.

Además, si solo desea utilizar la aplicación predeterminada para manejar archivos PDF, puede hacer lo siguiente. (Esto está en VBScript, pero debería funcionar igual en VB6)

File = 
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run Chr(34) & File & Chr(34)

Respuesta a los comentarios

Hay algunas maneras de acceder al registro en vb6, RegRead es uno. WMI es otra forma. Usaría WMI ya que puede enumerar subllaves fácilmente.

No hay nada de malo en leer HKEY_CLASSES_ROOT, pero si acaba de lanzar el manejador de pdf predeterminado, ¿por qué no simplemente ejecutarlo con el comando WshShell.Run anterior? Estás logrando lo mismo con un paso menos.

0
agregado
¿Pero cómo accede al registro en vb (no .net)? Después de eso, hay varias posibilidades ... las suyas son un poco extensas para mí, porque en HKEY_CLASSES_ROOT \ puedes recuperar todas las aplicaciones/clases adecuadas para iniciar/manejar documentos.
agregado el autor jpinto3912, fuente
comentarios arriba en post
agregado el autor Rob Haupt, fuente