====== GetRegistryDWord() ======
Consider the following VO function:
function RegistryDWord( hKey as ptr, cSubKey as string, cValueName as string ) as int pascal
local ptrKey as ptr
local nData as int
local nResult as long
local nLen as dword
nResult := RegOpenKeyEx( hKey, String2Psz( cSubKey ), 0, KEY_QUERY_VALUE, @ptrKey )
if nResult == ERROR_SUCCESS
nLen := 4
nResult := RegQueryValueEx( ptrKey, String2Psz( cValueName ), null_ptr, null_ptr, @nData, @nLen )
if nResult != ERROR_SUCCESS
nData := -1
endif
RegCloseKey( ptrKey )
endif
return nData
In X# it can be changed to
function RegistryDWord( hKey as ptr, cSubKey as string, cValueName as string ) as int pascal
local nData as int
if ! Left( cSubKey, 1 ) == "\"
cSubKey := "\" + cSubKey
endif
do case
case hKey == HKEY_CLASSES_ROOT
cSubKey := "HKEY_CLASSES_ROOT" + cSubKey
case hKey == HKEY_CURRENT_USER
cSubKey := "HKEY_CURRENT_USER" + cSubKey
case hKey == HKEY_LOCAL_MACHINE
cSubKey := "HKEY_LOCAL_MACHINE" + cSubKey
case hKey == HKEY_USERS
cSubKey := "HKEY_USERS" + cSubKey
endcase
nData := ( int ) GetRegistryValue( cSubKey, cValueName, 0 )
return nData