PDA

View Full Version : Detect Classic Theme



بمب منطقی
پنج شنبه 06 اسفند 1383, 20:09 عصر
با سلام:

میخواستم بدونم که با کدوم تابع API و یا با چه روش دیگه ای میشه تو برنامه تشخیص داد که ویندوز XP از Classic Theme استفاده میکنه یا از Modern Theme .
با تشکر :flower:

مهدی کرامتی
جمعه 07 اسفند 1383, 01:38 صبح
یک تابع API بنام IsThemeActive در فایل uxTheme.dll برای انجام اینکار وجود دارد:

IsThemeActive Function

--------------------------------------------------------------------------------

Tests if a visual style for the current application is active.

Syntax

BOOL IsThemeActive(VOID);
مثال استفاده در دلفی:

type TIsThemeActive = function(): boolean;

function IsXpThemesActive : Boolean;
var
hThemeLib: HINST;
IsThemeActive: TIsThemeActive;
begin
if (Win32Platform = VER_PLATFORM_WIN32_NT) and
(((Win32MajorVersion = 5) and (Win32MinorVersion >= 1)) or
(Win32MajorVersion > 5)) then
begin
hThemeLib := LoadLibrary('uxtheme.dll');
if hThemeLib <> 0 then
begin
IsThemeActive := GetProcAddress(hThemeLib, 'IsThemeActive');
Result:= IsThemeActive();
end;
FreeLibrary(hThemeLib)
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
If IsXpThemesActive Then
ShowMessage('Theme Service is Active')
Else
ShowMessage('Theme Service is not Active');
end;

بمب منطقی
جمعه 07 اسفند 1383, 22:34 عصر
مثل همیشه . دستتون درد نکنه. :) :flower: