Newsgroup: it.comp.lang.visual-basic
Titolo: Verificare se una dll o un ocx è installato.

Salve a tutti.
Qualcuno sa indicarmi in che modo è possibile verificare da vb6 de una
dll o un ocx è installato sul sistema?.
Esiste forse una funzione API che verifica questo?.
Grazie,
 guaguanco.

"guaguanco" ha scritto:

Con LoadLibrary:
<codice>
Option Explicit
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA"
( _
                                    ByVal lpLibFileName As String) As
Long
Private Declare Function GetProcAddress Lib "kernel32" ( _
                                    ByVal hModule As Long, _
                                    ByVal lpProcName As String _
                                    ) As Long
Private Declare Function FreeLibrary Lib "kernel32" ( _
                                    ByVal hLibModule As Long _
                                    ) As Long
Private Declare Function CallWindowProc Lib "user32" Alias
"CallWindowProcA" ( _
                                    ByVal lpPrevWndFunc As Long, ByVal
hWnd As Long, _
                                    ByVal Msg As Any, _
                                    ByVal wParam As Any, ByVal lParam As
Any _
                                    ) As Long
 
Private Const ERROR_SUCCESS = &H0
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Function RegistraActiveX(ByVal a_filename As String, _
                                ByVal a_flagRegister As Boolean _
                                ) As Boolean
    Dim hLib As Long            '// handle alla libreria ActiveX
    Dim hProc As Long           '// handle alla funzione
DllRegisterServer
    Dim lpProcName As String    '// nome della funzione esportata dalla
dll
 
    '// cerca di caricare l'activeX
    hLib = LoadLibrary(a_filename)
    If (hLib = 0) Then Exit Function
 
    '// verifica se e' un ActiveX registrabile
    If (a_flagRegister) Then
        lpProcName = "DllRegisterServer"
    Else
        lpProcName = "DllUnregisterServer"
    End If
    hProc = GetProcAddress(hLib, lpProcName)
    If (hProc = 0) Then
        FreeLibrary (hLib)
        Exit Function
    End If
 
    '// "sporco trucco" in vb per chiamare una funzione di cui
    '// si ha l' indirizzo
    RegistraActiveX = (ERROR_SUCCESS = _
                    CallWindowProc(hProc, 0&, 0&, 0&, 0&))
 
    FreeLibrary (hLib)
End Function    '// RegistraActiveX
</codice>
-- 
hth, hal
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 > dll o un ocx č installato sul sistema?.


mi sappia dire se tale ocx o dll è installato dul sistema.
1. Cerchiamo di imparare a quotare, per la miseria ! :-(
2. Se ti sforzi di capire il codice, vedrai che ti offre anche il modo di
    fare la verifica che chiedi ;-)
-- 
ciao, hal


Ok, vedo di approfondire meglio la conoscenza del codice che mi hai postato.
Non è per mia svogliatezza è che l'argomento API a mè risulta ancora ostico
e non ho capito fino in fondo il codice..
Bye e grazie di nuovo,
 guagua.

e non ho capito fino in fondo il codice..
Non c'e' nulla di male a non sapere. Purtroppo hai chiesto una cosa che richiede
qualche piccola conoscenza in piu' ;-)
Per i dettagli sulle funzioni usate puoi cominciare a cercare da msdn,
dove vengono ne spiegati i parametri di ingresso e gli eventuali valori
di ritorno.
L' importante e' non fare cut & paste selvaggio perche', prima o poi,
il computer presenta sempre il conto ;-)
-- 
ciao, hal