VBSample project - Technical -frmAbout- Functions
Functions offrmAbout


public sub StartSysInfo( )


General information

Full name frmAbout.StartSysInfo
Access public
Overload of  

Local variables

SysInfoPath String
rc Long

Source code

Public  Sub StartSysInfo()
     On Error GoTo SysInfoErr
  
     Dim rc As  Long
     Dim SysInfoPath As  String
    
     ' Try To Get System Info Program Path\Name From Registry...
     If GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFO, gREGVALSYSINFO, SysInfoPath)  Then
     ' Try To Get System Info Program Path Only From Registry...
     ElseIf GetKeyValue(HKEY_LOCAL_MACHINE, gREGKEYSYSINFOLOC, gREGVALSYSINFOLOC, SysInfoPath)  Then
         ' Validate Existance Of Known 32 Bit File Version
         If (Dir(SysInfoPath &  "\MSINFO32.EXE") <>  "" Then
            SysInfoPath = SysInfoPath &  "\MSINFO32.EXE"
            
         ' Error - File Can Not Be Found...
         Else
            GoTo SysInfoErr
         End  If
     ' Error - Registry Entry Can Not Be Found...
     Else
        GoTo SysInfoErr
     End  If
    
     Call Shell(SysInfoPath, vbNormalFocus)
    
    Exit  Sub
SysInfoErr:
    MsgBox  "System Information Is Unavailable At This Time", vbOKOnly
End  Sub

Functions and events referenced

Full name Owners
frmAbout.GetKeyValue frmAbout

Functions/Events referencing

Full name Owners
cmdSysInfo.cmdSysInfo_Click cmdSysInfo

Referenced properties

Full name Scope
frmAbout.gREGVALSYSINFOLOC attribute
frmAbout.gREGKEYSYSINFOLOC attribute
frmAbout.StartSysInfo.SysInfoPath local
frmAbout.gREGVALSYSINFO attribute
frmAbout.gREGKEYSYSINFO attribute
frmAbout.HKEY_LOCAL_MACHINE attribute



public function GetKeyValue( KeyRoot as Long , KeyName as String , SubKeyRef as String , byref KeyVal as String ) as Boolean


General information

Full name frmAbout.GetKeyValue
Access public
Overload of  

Parameters
KeyVal String
SubKeyRef String
KeyName String
KeyRoot Long

Local variables

KeyValSize Long
tmpVal String
KeyValType Long
hDepth Long
hKey Long
rc Long
i Long

Source code

Public  Function GetKeyValue(KeyRoot As  Long, KeyName As  String, SubKeyRef As  String, ByRef KeyVal As  String) As  Boolean
     Dim i As  Long                                            ' Loop Counter
     Dim rc As  Long                                           ' Return Code
     Dim hKey As  Long                                         ' Handle To An Open Registry Key
     Dim hDepth As  Long                                       '
     Dim KeyValType As  Long                                   ' Data Type Of A Registry Key
     Dim tmpVal As  String                                     ' Tempory Storage For A Registry Key Value
     Dim KeyValSize As  Long                                   ' Size Of Registry Key Variable
     '------------------------------------------------------------
     ' Open RegKey Under KeyRoot {HKEY_LOCAL_MACHINE...}
     '------------------------------------------------------------
    rc = RegOpenKeyEx(KeyRoot, KeyName,  0, KEY_ALL_ACCESS, hKey)  ' Open Registry Key
    
     If (rc <> ERROR_SUCCESS)  Then GoTo GetKeyError           ' Handle Error...
    
    tmpVal =  String$( 1024 0)                              ' Allocate Variable Space
    KeyValSize =  1024                                        ' Mark Variable Size
    
     '------------------------------------------------------------
     ' Retrieve Registry Key Value...
     '------------------------------------------------------------
    rc = RegQueryValueEx(hKey, SubKeyRef,  0, _
                         KeyValType, tmpVal, KeyValSize)     ' Get/Create Key Value
                        
     If (rc <> ERROR_SUCCESS)  Then GoTo GetKeyError           ' Handle Errors
    
     If (Asc(Mid(tmpVal, KeyValSize,  1)) =  0 Then            ' Win95 Adds Null Terminated String...
        tmpVal = Left(tmpVal, KeyValSize -  1)                ' Null Found, Extract From String
     Else                                                     ' WinNT Does NOT Null Terminate String...
        tmpVal = Left(tmpVal, KeyValSize)                    ' Null Not Found, Extract String Only
     End  If
     '------------------------------------------------------------
     ' Determine Key Value Type For Conversion...
     '------------------------------------------------------------
     Select  Case KeyValType                                   ' Search Data Types...
     Case REG_SZ                                              ' String Registry Key Data Type
        KeyVal = tmpVal                                      ' Copy String Value
     Case REG_DWORD                                           ' Double Word Registry Key Data Type
         For i = Len(tmpVal)  To  1 Step - 1                     ' Convert Each Bit
            KeyVal = KeyVal + Hex(Asc(Mid(tmpVal, i,  1)))    ' Build Value Char. By Char.
         Next
        KeyVal = Format$( "&h" + KeyVal)                      ' Convert Double Word To String
     End  Select
    
    GetKeyValue =  True                                       ' Return Success
    rc = RegCloseKey(hKey)                                   ' Close Registry Key
    Exit  Function                                            ' Exit
    
GetKeyError:       ' Cleanup After An Error Has Occured...
    KeyVal =  ""                                              ' Set Return Val To Empty String
    GetKeyValue =  False                                      ' Return Failure
    rc = RegCloseKey(hKey)                                   ' Close Registry Key
End  Function

Functions and events referenced

Full name Owners
frmAbout.RegCloseKey frmAbout
frmAbout.RegQueryValueEx frmAbout
frmAbout.RegOpenKeyEx frmAbout

Functions/Events referencing

Full name Owners
frmAbout.StartSysInfo frmAbout

Referenced properties

Full name Scope
frmAbout.GetKeyValue.i local
frmAbout.REG_DWORD attribute
frmAbout.GetKeyValue.KeyVal parameter
frmAbout.REG_SZ attribute
frmAbout.GetKeyValue.KeyValType local
frmAbout.GetKeyValue.SubKeyRef parameter
frmAbout.GetKeyValue.KeyValSize local
frmAbout.GetKeyValue.tmpVal local
frmAbout.ERROR_SUCCESS attribute
frmAbout.GetKeyValue.hKey local
frmAbout.KEY_ALL_ACCESS attribute
frmAbout.GetKeyValue.KeyName parameter
frmAbout.GetKeyValue.KeyRoot parameter
frmAbout.GetKeyValue.rc local




Document created on Wednesday 20 March 2002 at 09:57 by Visual Expert