Get version of OutlookExpress and MozillaThunderbird

Share your advanced PureBasic knowledge/code with the community.
va!n
Addict
Addict
Posts: 1104
Joined: Wed Apr 20, 2005 12:48 pm

Get version of OutlookExpress and MozillaThunderbird

Post by va!n »

Code updated for 5.20+

Get Version of OutlookExpress:

Code: Select all

;-------- Read Registry value by Manne in 2003 --------

Procedure GetValue(topKey, sKeyName.s, sValueName.s, ComputerName.s)
  Shared GetValue.s
  Define GetHandle, hKey, lpData.s, lpDataDWORD
  Define lpcbData, lType, lReturnCode, lhRemoteRegistry
  
  
  If Left(sKeyName, 1) = "\"
    sKeyName = Right(sKeyName, Len(sKeyName) - 1)
  EndIf
  
  If ComputerName = ""
    GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)
  Else
    lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry)
    GetHandle = RegOpenKeyEx_(lhRemoteRegistry, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)
  EndIf
  
  If GetHandle = #ERROR_SUCCESS
    lpcbData = 255
    lpData = Space(255)
    
    GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpData, @lpcbData)
    
    If GetHandle = #ERROR_SUCCESS
      Select lType
        Case #REG_SZ
          GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpData, @lpcbData)
          
          If GetHandle = 0
            GetValue = Left(lpData, lpcbData - 1)
          Else
            GetValue = ""
          EndIf
          
        Case #REG_DWORD
          GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lpType, @lpDataDWORD, @lpcbData)
          
          If GetHandle = 0
            GetValue = Str(lpDataDWORD)
          Else
            GetValue = "0"
          EndIf
          
      EndSelect
    EndIf
  EndIf
  RegCloseKey_(hKey)
  ProcedureReturn GetHandle
EndProcedure

;-------- Add this to check registry for IE version --------

sKeyName.s = "SOFTWARE\Microsoft\Outlook Express\Version Info\"
sTopKey = #HKEY_LOCAL_MACHINE

GetValue(sTopKey,sKeyName.s,"Current","")
Debug GetValue
Get Version of Mozilla Thunderbird:

Code: Select all

;-------- Read Registry value by Manne in 2003 --------

Procedure GetValue(topKey, sKeyName.s, sValueName.s, ComputerName.s)
  Shared GetValue.s
  Define GetHandle, hKey, lpData.s, lpDataDWORD
  Define lpcbData, lType, lReturnCode, lhRemoteRegistry
  
  If Left(sKeyName, 1) = "\"
    sKeyName = Right(sKeyName, Len(sKeyName) - 1)
  EndIf
  
  If ComputerName = ""
    GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)
  Else
    lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry)
    GetHandle = RegOpenKeyEx_(lhRemoteRegistry, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)
  EndIf
  
  If GetHandle = #ERROR_SUCCESS
    lpcbData = 255
    lpData = Space(255)
    
    GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpData, @lpcbData)
    
    If GetHandle = #ERROR_SUCCESS
      Select lType
        Case #REG_SZ
          GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpData, @lpcbData)
          
          If GetHandle = 0
            GetValue = Left(lpData, lpcbData - 1)
          Else
            GetValue = ""
          EndIf
          
        Case #REG_DWORD
          GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lpType, @lpDataDWORD, @lpcbData)
          
          If GetHandle = 0
            GetValue = Str(lpDataDWORD)
          Else
            GetValue = "0"
          EndIf
          
      EndSelect
    EndIf
  EndIf
  RegCloseKey_(hKey)
  ProcedureReturn GetHandle
EndProcedure

;-------- Add this to check registry for IE version --------

sKeyName.s = "SOFTWARE\Mozilla\Mozilla Firefox\"
sTopKey = #HKEY_LOCAL_MACHINE

GetValue(sTopKey,sKeyName.s,"CurrentVersion","")
Debug GetValue