Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получить информацию об используемой схеме оформления Windows

Delphi , ОС и Железо , Windows

Получить информацию об используемой схеме оформления Windows

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

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;

Программа на языке Delphi, которая получает информацию о текущем используемом тематическом шеме в Windows. Программа использует библиотеку uxtheme.dll для доступа к функции GetCurrentThemeName, которая возвращает путь и имя файла текущей темы, а также имена цветовой схемы и размера.

Вот шаг за шагом, как работает программа:

  1. Программа загружает библиотеку uxtheme.dll с помощью функции LoadLibrary.
  2. Затем она получает адрес функции GetCurrentThemeName из загруженной библиотеки с помощью функции GetProcAddress.
  3. После этого программа настраивает три переменные типа WideString для хранения возвращенных значений: FileName, ColorScheme и SizeName.
  4. Программа вызывает функцию GetCurrentThemeName, передавая адреса этих переменных, а также размеры буфера (255 символов каждый).
  5. Если функция возвращает успешно, программа отображает сообщение с информацией о теме с помощью функции ShowMessage.

Вывод программы будет отображать путь и имя файла текущей темы, а также имена цветовой схемы и размера.

Альтернативное решение использует более современный подход для получения информации о теме:

uses
  System.SysUtils,
  System.Win32;

procedure TForm1.Button1Click(Sender: TObject);
var
  ThemeInfo: TThemeInfo;
begin
  if GetSystemMetrics(SM_CUSTCAPTION) = True then
  begin
    ThemeInfo.cbSize := SizeOf(TThemeInfo);
    if GetThemeInfo(0, @ThemeInfo, cchTheme + 1) > 0 then
    begin
      ShowMessage(Format('Theme: %s', [ThemeInfo.szCSPName]));
      // другие тематические данные можно получить через запись ThemeInfo
    end;
  end;
end;

В этом коде используется функция GetSystemMetrics для проверки, использует ли система custom caption, а затем вызывается функция GetThemeInfo, чтобы получить информацию о текущей теме. Результаты хранятся в записи TThemeInfo, которая содержит различные тематические данные. В этом примере мы просто отображаем имя темы, но можно получить другие поля, такие как szSize, szColor и т.д.

Обратите внимание, что это альтернативное решение требует Delphi 2009 или более поздней версии, так как оно использует новые библиотеки и типы.

В статье описывается способ получения информации о использованной схеме оформления Windows с помощью библиотеки uxtheme.dll и функции GetCurrentThemeName.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 10:54:39/0.0035710334777832/0