Trucos Verificar si una aplicación está instalada

En la lista han preguntado por alguna manera de saber si en el ordenador en el que se ejecuta nuestro programa está instalada una aplicación determinada (por ejemplo word, winzip, etc).

Se me ocurren varias maneras. Puedes buscar el ejecutable por todo el disco (si conoces el nombre), puedes buscar en el registro las claves que cree al instalarse (aunque pudiera no estar ya instalado y no haberse borrado correctamente)... Yo creo que la manera más sencilla (aunque no es 100% segura) es, si el programa que buscas asocia alguna extensión con él, buscar el ejecutable asociado a una extensión. Es decir, en nuestros ejemplos sería buscar el programa asociado a la extensión .zip y el
programa asociado a .doc.
Para limitar los errores posibles podrías comprobar si el programa asociado se llama como estás buscando.
Para buscar el programa que está asociado a una extensión puedes emplear la función del API FindExecutable :

Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" _
(ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As _
String) As Long

Para ello debes crear un fichero con la extensión que quieres comprobar (no importa el contenido).
Podrías usar una función de este estilo :

Function DameEjecutable(Extension As String) As String
Dim Programa As String, l As Long, FileName As String

On Local Error Resume Next

'creo el fichero
FileName = "c:\temporal"
If Left(Extension, 1) <> "." Then FileName = FileName & "."
FileName = FileName & Extension
l = FreeFile() ' Coger un nº de fichero no utilizado
Open FileName For Output As #l
   Write #l, "fichero temporal"
Close #l
'inicializo la variable
Programa = Space(255)
'busco el ejecutable
l = FindExecutable(FileName, vbNullString, Programa)
'borro el fichero
Kill FileName
'devuelvo el valor
If l > 32 Then
     DameEjecutable = Programa
Else
     DameEjecutable = ""
End If
End Function

Acabo de hacerla y no la he probado mucho pero creo que funciona bien.



Trucos Trucos

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com