Hallo,
ich versuche gerade herauszufinden, wie Unicode-Strings aus der Registry gelesen werden können. Dazu habe ich folgenden Code, welcher jedoch immer ein Fragezeichen zurückgibt an der entprechenden Stelle:
function GetSchemename: Widestring;
var
s: widestring;
EnvKey: HKEY;
Buf: array[0..32] of WideChar;
BufSize: DWord;
RegType: DWord;
rc: DWord;
begin
result := '.Default'; {*** defaultwert ***}
EnvKey := HKEY_CURRENT_USER;
BufSize := SizeOf(Buf);
ZeroMemory(@Buf, BufSize);
RegType := REG_SZ;
if (RegOpenKeyEx(HKEY_CURRENT_USER, PChar('AppEvents\Schemes'), 0, KEY_READ, EnvKey) = ERROR_SUCCESS) then
try
rc := RegQueryValueEx(EnvKey, PChar(''), nil, @RegType, @Buf, @BufSize);
if rc = ERROR_SUCCESS then
s := (buf);
result := s;
RegCloseKey(EnvKey);
finally
RegCloseKey(HKEY_CURRENT_USER);
end;
end;
Es geht darum, gespeicherte Profile auszulesen. Wenn nun ein Soundschema gespeichert wird, wird ein Unicode-Zeichen an den Namen angehängt (WinXP). Aus Soundschema wird zum Beispiel Soundsc0? - Windows kürzt ab und erhöt einen Zähler. Das Fragezeichen wird in der Registry unter
HKEY_CURRENT_USER\AppEvents\Schemes\Names
immer als ein Viereck angezeigt.
Wie kann man das nun in einen String bekommen - WideString funktioniert hier nicht ?
ich versuche gerade herauszufinden, wie Unicode-Strings aus der Registry gelesen werden können. Dazu habe ich folgenden Code, welcher jedoch immer ein Fragezeichen zurückgibt an der entprechenden Stelle:
function GetSchemename: Widestring;
var
s: widestring;
EnvKey: HKEY;
Buf: array[0..32] of WideChar;
BufSize: DWord;
RegType: DWord;
rc: DWord;
begin
result := '.Default'; {*** defaultwert ***}
EnvKey := HKEY_CURRENT_USER;
BufSize := SizeOf(Buf);
ZeroMemory(@Buf, BufSize);
RegType := REG_SZ;
if (RegOpenKeyEx(HKEY_CURRENT_USER, PChar('AppEvents\Schemes'), 0, KEY_READ, EnvKey) = ERROR_SUCCESS) then
try
rc := RegQueryValueEx(EnvKey, PChar(''), nil, @RegType, @Buf, @BufSize);
if rc = ERROR_SUCCESS then
s := (buf);
result := s;
RegCloseKey(EnvKey);
finally
RegCloseKey(HKEY_CURRENT_USER);
end;
end;
Es geht darum, gespeicherte Profile auszulesen. Wenn nun ein Soundschema gespeichert wird, wird ein Unicode-Zeichen an den Namen angehängt (WinXP). Aus Soundschema wird zum Beispiel Soundsc0? - Windows kürzt ab und erhöt einen Zähler. Das Fragezeichen wird in der Registry unter
HKEY_CURRENT_USER\AppEvents\Schemes\Names
immer als ein Viereck angezeigt.
Wie kann man das nun in einen String bekommen - WideString funktioniert hier nicht ?
Comment