[RESUELTO] Saber si tengo instalado un programa o ActiveX en específico
#1
Escrito 28 septiembre 2009 - 01:24
Fleon xD
#2
Escrito 28 septiembre 2009 - 02:38
Holas a todos, eso, necesito saber si hay alguna forma de saber si tengo instalado un programa o ActiveX en específico, el objetivo de eso es que al ejecutar mi sistema verificar si tiene algún ActiveX o programa instalado que requiera y avise al usuario en caso de no tenerlo. ¿se puede?.
Fleon xD
Una manera de hacerlo es haciendo uso de la función loadlibrary. Si te devuelve 0 es que no encuentra el activex. de otra manera si está registrado.
aquí un ejemplo:
//esto te devolvera 0: ShowMessage(IntTostr(LoadLibrary('SomeActivex.Ocx') ); //Esto te devolverá un valor diferente: ShowMessage(IntTostr(LoadLibrary('hhctrl.ocx') );
saludos.
#3
Escrito 29 septiembre 2009 - 11:55
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(IntTostr(LoadLibrary('Flash10c.ocx'))); end;
Pero siempre me devuelve 0 , ¿qué podrá ser?¿estoy haciendo algo mal?.
Fleon xD
#4
Escrito 29 septiembre 2009 - 11:59
#5
Escrito 29 septiembre 2009 - 12:11
Hola Poliburro, muchas gracias, estoy haciendo la prueba, estoy probando si tengo flash, en mi pc tengo Flash10c.ocx en la dirección C:\WINDOWS\system32\Macromed\Flash, con el code queda así:
delphi
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(IntTostr(LoadLibrary('Flash10c.ocx'))); end;
Pero siempre me devuelve 0 , ¿qué podrá ser?¿estoy haciendo algo mal?.
Fleon xD
prueba esa misma función amigo colocando la ruta donde se encuentra ese ocx en mi caso es c:\Windows\System32\Macromed\flash\Flash10c.ocx'
saludos
#6
Escrito 29 septiembre 2009 - 12:33
Fleon xD
#7
Escrito 29 septiembre 2009 - 01:33
Gracias enecumene y Poliburro, haciendolo así me da un valor de 268435456 ¿es correcto?
Fleon xD
totalmente correcto amigo, ese valor corresponde al handle de la libreria. Cuando el valor es cero significa que no pudo ser cargada
#8
Escrito 30 septiembre 2009 - 06:11
totalmente correcto amigo, ese valor corresponde al handle de la libreria. Cuando el valor es cero significa que no pudo ser cargada
Perfecto, Muchas gracias Poliburro!
Fleon xD
#9
Escrito 30 septiembre 2009 - 10:37
Gracias enecumene y Poliburro, haciendolo así me da un valor de 268435456 ¿es correcto?
Fleon xD
totalmente correcto amigo, ese valor corresponde al handle de la libreria. Cuando el valor es cero significa que no pudo ser cargada
Pregunta: Y sólo puede NO cargarse porque no se encontró ? No existe alguna otra causa por la que se impida la carga y se confunda ésto con una ausencia del programa o del ActiveX ? :$ sorry, no se, por eso pregunto...
Saludox !
#10
Escrito 30 septiembre 2009 - 10:46
Gracias enecumene y Poliburro, haciendolo así me da un valor de 268435456 ¿es correcto?
Fleon xD
totalmente correcto amigo, ese valor corresponde al handle de la libreria. Cuando el valor es cero significa que no pudo ser cargada
Pregunta: Y sólo puede NO cargarse porque no se encontró ? No existe alguna otra causa por la que se impida la carga y se confunda ésto con una ausencia del programa o del ActiveX ? :$ sorry, no se, por eso pregunto...
Saludox !
Otra causa sería que el Activex no haya sido registrado con RegServ32
#11
Escrito 30 septiembre 2009 - 11:02
....
Otra causa sería que el Activex no haya sido registrado con RegServ32
Y cómo podríamos saber que fue por su ausencia y no por esto que mencionas que no se ha cargado ? :$
[off-topic]aaahhh pero qué ganas de molestar :$[/off-topic]
Saludox !
#12
Escrito 30 septiembre 2009 - 11:08
Y cómo podríamos saber que fue por su ausencia y no por esto que mencionas que no se ha cargado ? :$
Se podría combinar con FileExists, LoadLibrary y en una lectura del registro, deja ver si encuentro tiempo de crear una función o procedimiento que combine las tres cosas.
Saludos.