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 Aktueller Windows XP Style abfragen (https://www.delphipraxis.net/96222-aktueller-windows-xp-style-abfragen.html)

delphitrixer 20. Jul 2007 10:59


Aktueller Windows XP Style abfragen
 
Hallo Zusammen

Weiss jemand wie man zuverlässig den aktuell eingestellten Windows XP Style abfragen
kann? Ich benötige die Info welcher Stil (Klassisch oder XP) und welches Farbschema
(Blue, Silber etc.) in den Eigenschaften eingestellt ist.

Ich habe eine Code auf http://www.swissdelphicenter.ch gefunden aber der stürzt ab wenn XP auf klassisch gestellt ist.

Der sieht so aus:
Delphi-Quellcode:
uses ComObj, SyncObjs;

var
  GetCurrentThemeName: function (pszThemeFileName: LPWSTR; cchMaxNameChars: Integer;
    pszColorBuff: LPWSTR; cchMaxColorChars: Integer; pszSizeBuff: LPWSTR;
    cchMaxSizeChars: Integer): HRESULT; stdcall;

procedure TForm1.Button1Click(Sender: TObject);
var
  FileName, ColorScheme, SizeName: WideString;
  hThemeLib: THandle;
begin
  try
    hThemeLib := LoadLibrary('uxtheme.dll');
    if hThemeLib > 0 then
      GetCurrentThemeName := GetProcAddress(hThemeLib, 'GetCurrentThemeName');
    if Assigned(GetCurrentThemeName) then
    begin
      SetLength(FileName, 255);
      SetLength(ColorScheme, 255);
      SetLength(SizeName, 255);
      OleCheck(GetCurrentThemeName(PWideChar(FileName), 255,
        PWideChar(ColorScheme), 255, PWideChar(SizeName), 255));
      // show the the theme path and file name.
      ShowMessage(PWideChar(FileName));
      // show the color scheme name
      ShowMessage(PWideChar(ColorScheme));
      // show the size name
      ShowMessage(PWideChar(SizeName));
    end;
  finally
    FreeLibrary(hThemeLib);
  end;
end;
Hat jemanden ein besseres Beispiel?

toms 20. Jul 2007 11:33

Re: Aktueller Windows XP Style abfragen
 
Hallo

Überprüfe, ob GetCurrentThemeName S_OK zurückgibt.

Delphi-Quellcode:
     
//....
if GetCurrentThemeName(PWideChar(FileName), 255,
        PWideChar(ColorScheme), 255, PWideChar(SizeName), 255) = S_OK then
     begin
      // show the the theme path and file name.
      ShowMessage(PWideChar(FileName));
      // show the color scheme name
      ShowMessage(PWideChar(ColorScheme));
      // show the size name
      ShowMessage(PWideChar(SizeName));
    end;
//....

delphitrixer 20. Jul 2007 12:22

Re: Aktueller Windows XP Style abfragen
 
Besten Dank. Das klappt! :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 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