VERIFICANDO SE DLL/OCX ESTAO REGISTRADAS

VERNIZZE 12/03/2010 07:12:58
#336701
Bom dia Pessoal

Preciso saber se uma dll/ ocx já está registrada no meu sistema (que não tem VB instalado).
Alguém pode me dar uma dica de como meu verificar esta situação via código ?

Muito obrigado !
DINHORSO 21/03/2010 12:32:09
#337539
Voce verifica se a referida dll esta na pasta c:\windows\system32 caso esteja so fazer um registro usando regsvr32
RENNERFERNANDES 21/03/2010 13:58:15
#337543
em um módulo

Option Explicit

Public Function CheckMasked() As Long
On Error Resume Next
Dim Ctrl As Control
For Each Ctrl In form1 [ô] coloque aqui o formulário do componente
If TypeOf Ctrl Is MaskEdBox Then
Else
End If
Next
If Err.number = 0 Then
CheckMasked = 1
Else
CheckMasked = 0
Shell ([Ô]Regsvr32.exe MSMASK32.OCX[Ô])
End If
On Error GoTo 0
End Function

Public Function CheckSSTAB() As Long
On Error Resume Next
Dim Ctrl As Control
For Each Ctrl In form1 [ô] coloque aqui o formulário do componente
If TypeOf Ctrl Is SSTab Then
Else
End If
Next
If Err.number = 0 Then
CheckSSTAB = 1
Else
CheckSSTAB = 0
Shell ([Ô]Regsvr32.exe TABCTL32.OCX[Ô])
Shell ([Ô]Regsvr32.exe MSCOMCTL.OCX[Ô])
End If
On Error GoTo 0
End Function

Public Function Checkchameleonbutton() As Long
On Error Resume Next
Dim Ctrl As Control
For Each Ctrl In form1 [ô] coloque aqui o formulário do componente
If TypeOf Ctrl Is chameleonButton Then
Else
End If
Next
If Err.number = 0 Then
Checkchameleonbutton = 1
Else
Checkchameleonbutton = 0
Shell ([Ô]Regsvr32.exe CamaleonButton.ocx[Ô])
End If
On Error GoTo 0
End Function


Public Function testecomponentes()
[ô]
Select Case CheckMasked
Case 1
[ô] MsgBox [Ô]O componente Masked Edit está instalado[Ô], vbInformation, [Ô]OK[Ô]
Case 0
MsgBox [Ô]O componente Masked Edit não está instalado[Ô], vbCritical, [Ô]ERRO[Ô]
End Select
[ô]
Select Case CheckSSTAB
Case 1
[ô] MsgBox [Ô]O componente SSTAB Edit está instalado[Ô], vbInformation, [Ô]OK[Ô]
Case 0
MsgBox [Ô]O componente SSTAB Edit não está instalado[Ô], vbCritical, [Ô]ERRO[Ô]
End Select
[ô]
Select Case Checkchameleonbutton
Case 1
[ô] MsgBox [Ô]O componente CHAMELEONBUTTON Edit está instalado[Ô], vbInformation, [Ô]OK[Ô]
Case 0
MsgBox [Ô]O componente CHAMELEONBUTTON Edit não está instalado[Ô], vbCritical, [Ô]ERRO[Ô]
End Select
End Function


em um formulário

private sub command1_click
testecomponentes
end sub
FADSYSTEM 21/03/2010 19:32:27
#337561
Resposta escolhida
[txt-color=#0000f0]Option Explicit[/txt-color]

[txt-color=#007100][ô]fazer o references (project->References) para a biblioteca Type Library Information[/txt-color]

[txt-color=#0000f0]Const[/txt-color] HKEY_CLASSES_ROOT = &H80000000
[txt-color=#007100][ô]Const HKEY_LOCAL_MACHINE = &H80000002[/txt-color]

[txt-color=#0000f0]Private Declare Function[/txt-color] RegCloseKey [txt-color=#0000f0]Lib[/txt-color] [Ô]advapi32.dll[Ô] ([txt-color=#0000f0]ByVal[/txt-color] hKey [txt-color=#0000f0]As Long[/txt-color]) [txt-color=#0000f0]As Long[/txt-color]
[txt-color=#0000f0]Private Declare Function[/txt-color] RegOpenKey [txt-color=#0000f0]Lib[/txt-color] [Ô]advapi32.dll[Ô] [txt-color=#0000f0]Alias[/txt-color] [Ô]RegOpenKeyA[Ô] ([txt-color=#0000f0]ByVal[/txt-color] hKey [txt-color=#0000f0]As Long[/txt-color], [txt-color=#0000f0]ByVal[/txt-color] lpSubKey [txt-color=#0000f0]As String[/txt-color], phkResult [txt-color=#0000f0]As Long[/txt-color]) [txt-color=#0000f0]As Long[/txt-color]


[txt-color=#0000f0]Function[/txt-color] IsRegComp(hKey [txt-color=#0000f0]As Long[/txt-color], strPath [txt-color=#0000f0]As String[/txt-color]) [txt-color=#0000f0]As Boolean[/txt-color]
[txt-color=#0000f0]Dim[/txt-color] Ret [txt-color=#0000f0]As Long[/txt-color]
[txt-color=#007100][ô]Open the key[/txt-color]
RegOpenKey hKey, strPath, Ret
IsRegComp = [txt-color=#0000f0]IIf[/txt-color](Ret > 0, [txt-color=#0000f0]True[/txt-color], [txt-color=#0000f0]False[/txt-color])
[txt-color=#007100][ô]Close the key[/txt-color]
RegCloseKey Ret
[txt-color=#0000f0]End Function[/txt-color]


[txt-color=#0000f0]Private Sub [/txt-color]Command1_Click()
[txt-color=#0000f0]Dim[/txt-color] vGuid [txt-color=#0000f0]As String[/txt-color]
[txt-color=#0000f0]Dim[/txt-color] tip [txt-color=#0000f0]As[/txt-color] TLIApplication
[txt-color=#0000f0]Set[/txt-color] tip = [txt-color=#0000f0]New[/txt-color] TLIApplication

vGuid = tip.TypeLibInfoFromFile([Ô]C:\SerialHD.dll[Ô]).Guid

[txt-color=#0000f0]Set[/txt-color] tip = [txt-color=#0000f0]Nothing[/txt-color]

[txt-color=#0000f0]If[/txt-color] IsRegComp(HKEY_CLASSES_ROOT, [Ô]TypeLib\[Ô] & vGuid) [txt-color=#0000f0]Then[/txt-color]
MsgBox [Ô]Componente (Ocx/Dll) registrado![Ô]
[txt-color=#0000f0]Else[/txt-color]
MsgBox [Ô]Componente (Ocx/Dll) não registrado![Ô]
[txt-color=#0000f0]End If[/txt-color]
[txt-color=#0000f0]End Sub[/txt-color]


[txt-color=#007100][ô][/txt-color][txt-color=#e80000]ATENÇÃO:[/txt-color] [txt-color=#007100]Observe que informei o local do arquivo [Ô]C:\SerialHD.dll[Ô], pois o mesmo não encontra-se na pasta System32, caso contrário, não será necessário informar o Path do arquivo.[/txt-color]


Atenciosamente,

Fabio Araujo Damascena
VERNIZZE 15/04/2010 14:11:42
#339512
Obrigado FADSYSTEM

Funcionou.

Abaço a todos
Tópico encerrado , respostas não são mais permitidas