Odczyt i zapis koloru do rejestru

Odczyt i zapis koloru do rejestru
chkam
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 4 lata
  • Postów:59
0

Witam.
Napisałem sobie taki oto kod:

Kopiuj
 Registry.RootKey := HKEY_CURRENT_USER;
  Registry.OpenKey( 'SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize', False );
  if Registry.ValueExists( 'SpecialColor' ) then begin
    ReadInt := Registry.ReadInteger( 'SpecialColor' );
    ColorBox_RegTheme_CustomColor.Selected := RGB( StrToInt('$' + copy( IntToHex( ReadInt, 8 ) ,7,2)),
                                                   StrToInt('$' + copy( IntToHex( ReadInt, 8 ) ,5,2)),
                                                   StrToInt('$' + copy( IntToHex( ReadInt, 8 ) ,3,2)) );
  end else begin
    ColorBox_RegTheme_CustomColor.Selected := clWhite;
  end;
  Registry.CloseKey;

wyciąga on kolor z rejestru (Windows 10 custom theme color )

Następnie próbowałem wrzucić zmodyfikowany kolor, ale niestety nie wrzucił się już taki sam tylko inny :/
Kod jest następujący:

Kopiuj
  Registry.RootKey := HKEY_CURRENT_USER;
  Registry.OpenKey( 'SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize', False );
  WriteInt := StrToInt( IntToStr((ColorBox_RegTheme_CustomColor.Selected and $ff0000) shr 16) +
                        IntToStr((ColorBox_RegTheme_CustomColor.Selected and $ff00) shr 8) +
                        IntToStr(ColorBox_RegTheme_CustomColor.Selected and $ff));
  Registry.WriteInteger( 'SpecialColor', WriteInt );
  Registry.CloseKey;

problem jest prawdopodobnie taki że pobieram ARGB a zapisuję RGB
W rejestrze to wygląda tak: ffd77800, ja pobieram jedynie d77800.
Co zrobić by kolor zapisywany się zgadzał z tym co chciałbym zapisać ?

spartanPAGE
Blah, kolejna osoba niepotrzebnie śmiecąca w rejestrze
chkam
Nie chce mi się wchodzić w rejestr i zmieniać ręcznie ciągle rzeczy, a programom typu Tweak nie bardzo ufam :P
AF
  • Rejestracja:prawie 18 lat
  • Ostatnio:około 2 miesiące
1

Przy zapisywaniu dodaj mu ff na początku?

chkam
Dodałem mu '255' + IntToStr(( ... i nie pomogło wartość jest za duża :/ a samo ff nie jest w stanie skonwertować na Int
AF
Rusz głową, przecież masz dać 255 na początku. Nagle zapomniałeś jak robi się operacje bitowe, które masz w swoim kodzie?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.