Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Themes, Schemes, Apperance (https://www.delphipraxis.net/82454-themes-schemes-apperance.html)

colder 13. Dez 2006 15:17


Themes, Schemes, Apperance
 
Hallo,

Ich versuche Einstellungen betr. der Desktop-Darstellung zu sichern
und wiederherzustellen.

1.Wie kann ich mit Delphi-Code z.B. auslesen (XP) welches Design aktiviert
ist.

2.Wie kann ich ein bestimmtes Design aktivieren.

3.Wie kann ich das Farbschema ändern.

Code:
function SchemeSwitcher:LongInt;
Var
   Handle           : THandle;
   DeskSetCurrentScheme: TDeskSetCurrentScheme;
Begin
   sSchemeName := GetSchemeName(sSchemeName);
   Handle := LoadLibrary('desk.cpl');
   If Handle <> 0 Then Begin
      DeskSetCurrentScheme := GetProcAddress(Handle, 'DeskSetCurrentScheme');
      Try
         Result := DeskSetCurrentScheme(sSchemeName);
      Except
      End;
   End;
end;
hiermit lassen sich z.B. Schemes umschalten, funktioniert allerdings nicht mit allen.

Code:
Procedure ThemeSwitcher;
Var
   wnd: HWND;
   sRunDLL: String;
   sParam: String;
   bEnd: Boolean;
Begin
   bEnd := False;
   wnd := 0;
   If GetSystemDefaultLCID = 1031 Then Begin
      If IsWinXP Then
         sDialogName := sDialogNameDE_XP
      Else
         sDialogName := sDialogNameDE_Vista;
   End Else Begin
      If IsWinXp Then
         sDialogName := sDialogNameEN_XP
      Else
         sDialogName := sDialogNameEN_Vista;
   End;
   sRunDLL := 'C:\WINDOWS\system32\rundll32.exe';
   sParam := Format('C:\WINDOWS\system32\shell32.dll,Control_RunDLL C:\WINDOWS\system32\desk.cpl desk,@Themes /Action:OpenTheme /file:"%s"', [sThemeFileEnv]);
   Try
      ShellExec(0, 'open', sRunDLL, sParam, '', SW_HIDE);
   Except
   End;
   While Not bEnd Do Begin
      Sleep(200);
      If sDialogName <> '' Then
         wnd := FindWindowByTitle(sDialogName);
      If wnd <> 0 Then
         ShowWindow(wnd, SW_HIDE);
      If sControlName <> '' Then
         bEnd := ClickButton(wnd, sControlName);
   End;
End;
Hiermit lässt sich z.B. ein Design umschalten. Allerding wird dazu der Dialog aufgerufen
und Remote auf den OK-Button geklickt. Nicht sehr schön. Gibt es irgendein API?

ps: ich möchte nicht nur einzelne Controls stylen (UxThemes.pas) sondern die Shell/Desktop.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz