@HX_unbanned,顯然你有點困惑。因爲將主題單元添加到您的項目中只會增加321 kb aprox中exe的大小。無論如何,如果你想檢查你的應用程序是否爲主題(themesEnabled)手動你必須按照下面的步驟。
1)檢查comctl32.dll庫的版本(必須是大或等於6)
2)加載的uxtheme.dll庫
3)導入IsThemeActive
和IsAppThemed
功能。
4)檢查的論文函數的值(兩者都必須爲真)
檢查該樣品
function ThemesEnabled :Boolean;
const
ComCtlVersionIE6 = $00060000;
var
ThemeLib : THandle;
IsThemeActive : function: Boolean; stdcall;
IsAppThemed : function: Boolean; stdcall;
begin
Result:=GetFileVersion('comctl32.dll')>=ComCtlVersionIE6;
if not Result then exit;
ThemeLib := LoadLibrary('uxtheme.dll');
try
if ThemeLib > 0 then
begin
IsAppThemed := GetProcAddress(ThemeLib, 'IsAppThemed');
IsThemeActive := GetProcAddress(ThemeLib, 'IsThemeActive');
Result:=IsAppThemed and IsThemeActive;
end
else
Result:=False;
finally
FreeLibrary(ThemeLib);
end;
end;
嗯。好吧,這將是正確的解決方案,但 - 實際上添加UxThemes單元項目增量大小約321kb ...如果我添加主題單元,有額外約6.5 MB的編譯EXE。 Btw - 有沒有什麼辦法可以在相應的Windows DLL(API調用)中找到delphi函數? – 2010-05-21 07:24:05
謝謝。我會盡快測試;) – 2010-05-21 08:09:54
是的,HX。只需搜索源代碼。 Delphi函數將調用API函數,因此當您找到其中一個時,您會發現附近的其他人。 – 2010-05-21 18:23:19