11-05-2006, 10:21 AM
If rget returns 0, it means that the key does not exist, or its data type is not REG_BINARY, or its data size is no equal to sizeof(RECT).
To get data of arbitrary length use Windows API functions. The following is C code. It can be converted to QM.
//_____________________________________
int RGetB(LPSTR key, LPSTR value, void* data, DWORD size, HKEY hive)
{
HKEY hKey; DWORD rc, type=REG_BINARY;
if(RegOpenKeyEx(hive, key, 0, KEY_QUERY_VALUE, &hKey)) return 0;
rc=RegQueryValueEx(hKey, value, 0, &type, (LPBYTE)data, &size);
RegCloseKey(hKey);
if(rc==0 && type==REG_BINARY) return size; else return 0;
}
To get data of arbitrary length use Windows API functions. The following is C code. It can be converted to QM.
//_____________________________________
int RGetB(LPSTR key, LPSTR value, void* data, DWORD size, HKEY hive)
{
HKEY hKey; DWORD rc, type=REG_BINARY;
if(RegOpenKeyEx(hive, key, 0, KEY_QUERY_VALUE, &hKey)) return 0;
rc=RegQueryValueEx(hKey, value, 0, &type, (LPBYTE)data, &size);
RegCloseKey(hKey);
if(rc==0 && type==REG_BINARY) return size; else return 0;
}
