Weiß jemand wo der Fehler ist?
Wenn man ehrlich ist ... in der Dll selbst ...
Laut Hilfe liefert getValue folgendes:
GetValue can return four different types of data:
String - If the value is of type REG_SZ.
Integer - If the value is of type REG_DWORD
Bytes Array - If the value is of type REG_BINARY.
String Array - If the value is of type REG_MULTI_SZ.
Der Volume-Eintrag in der Registry ist vom Typ REG_DWORD, wird durch die Dll leider als Integer (konkret vom Type Int32) zurückgegeben. Der Befehl getInt gibt auch nur einen Wert vom Typ Int32 zurück. Somit sind große Volume Werte nicht korrekt ermittelbar.
Deutlich wird das ganze, wenn Du den Wert bei verschiedenen Lautstärken ausliest:
- stellst Du Deinen PDA stumm, gibt es den richtigen Wert 0.
- stellst Du Deinen PDA auf minimale Lautstärke, gibt es auch einen richtigen Wert
- stellst Du die Lautstärke immer höher, dann wird der ausgelesene Wert irgendwann negativ (durch die Int32-Konvertierung)
- und irgendwann (bei mir z.B. bei voller Lautstärke) wird daraus eine -1
Leider habe ich auch keine Lösung parat, wie man den Eintrag immer korrekt erhält. Ggf. sollten wir mal Erel fragen, ob er den Rückgabewert in der Dll z.B. auf einen Int64 ändern kann.
specci48