|
|
|
|
|
Dicas
|
|
Visual Basic (ActiveX/Controles/DLL)
|
|
|
Título da Dica: Verificar se o Adobe Reader está instalado
|
|
|
|
Postada em 14/12/2007 por ¨PCNATIVO
Option Explicit Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, _ ByVal lpSubKey As String, _ ByVal ulOptions As Long, _ ByVal samDesired As Long, _ phkResult As Long) As Long Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, _ ByVal lpValueName As String, _ ByVal lpReserved As Long, _ lpType As Long, _ lpData As Any, _ lpcbData As Long) As Long Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Private Enum HKEYS HKEY_LOCAL_MACHINE = &H80000002 End Enum Private Const SYNCHRONIZE As Long = &H100000 Private Const STANDARD_RIGHTS_ALL As Long = &H1F0000 Private Const KEY_QUERY_VALUE As Long = &H1 Private Const KEY_SET_VALUE As Long = &H2 Private Const KEY_CREATE_SUB_KEY As Long = &H4 Private Const KEY_ENUMERATE_SUB_KEYS As Long = &H8 Private Const KEY_NOTIFY As Long = &H10 Private Const KEY_CREATE_LINK As Long = &H20 Private Const KEY_ALL_ACCESS As Long = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE)) Private Const ERROR_SUCCESS As Long = 0& Private Const READ_CONTROL = &H20000 Private Const STANDARD_RIGHTS_READ = (READ_CONTROL) Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE)) Private Const KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE)) Private Function Reg_CarregarValor(ByVal regHKEY As HKEYS, _ ByVal sSection As String, _ ByVal sKey As String, _ Optional ByVal sDefault As String) As String Dim lReturn As Long Dim hKey As Long Dim lType As Long Dim lBytes As Long Dim sBuffer As String Reg_CarregarValor = sDefault lReturn = RegOpenKeyEx(regHKEY, REGSubKey(sSection), 0&, KEY_ALL_ACCESS, hKey) If lReturn = 5 Then lReturn = RegOpenKeyEx(regHKEY, REGSubKey(sSection), 0&, KEY_EXECUTE, hKey) End If If lReturn = ERROR_SUCCESS Then If sKey = "*" Then sKey = vbNullString End If lReturn = RegQueryValueEx(hKey, sKey, 0&, lType, ByVal sBuffer, lBytes) If lReturn = ERROR_SUCCESS Then If lBytes > 0 Then sBuffer = Space$(lBytes) lReturn = RegQueryValueEx(hKey, sKey, 0&, lType, ByVal sBuffer, Len(sBuffer)) If lReturn = ERROR_SUCCESS Then Reg_CarregarValor = Left$(sBuffer, lBytes - 1) End If End If End If End If End Function Private Function REGSubKey(Optional ByVal sSection As String) As String If Left$(sSection, 1) = "" Then sSection = Mid$(sSection, 2) End If If Right$(sSection, 1) = "" Then sSection = Mid$(sSection, 1, Len(sSection) - 1) End If REGSubKey = sSection End Function Public Function IsAcrobatReaderInstalled() As Boolean Dim strFile As String On Error GoTo errHandler strFile = Reg_CarregarValor(HKEY_LOCAL_MACHINE, "SOFTWAREMicrosoftWindowsCurrentVersionApp PathsAcroRd32.exe", "") IsAcrobatReaderInstalled = FileLen(strFile) Err.Clear errHandler: If Err <> 0 Then IsAcrobatReaderInstalled = False End If End Function
|
|
|
|
|