如何通過Delphi 7上的代碼檢測到用戶正在他的操作系統上運行Windows Aero主題?如何檢測Delphi 7上的Windows Aero主題?
回答
我們需要使用的功能是Dwmapi.DwmIsCompositionEnabled
,但不包括在Windows頭文件翻譯的是用Delphi 7船在Vista中加入,釋放後德爾福7.又崩潰的Windows XP應用程序 - 這樣的呼叫它在檢查if Win32MajorVersion >= 6
後。
function IsAeroEnabled: Boolean;
type
TDwmIsCompositionEnabledFunc = function(out pfEnabled: BOOL): HRESULT; stdcall;
var
IsEnabled: BOOL;
ModuleHandle: HMODULE;
DwmIsCompositionEnabledFunc: TDwmIsCompositionEnabledFunc;
begin
Result := False;
if Win32MajorVersion >= 6 then // Vista or Windows 7+
begin
ModuleHandle := LoadLibrary('dwmapi.dll');
if ModuleHandle <> 0 then
try
@DwmIsCompositionEnabledFunc := GetProcAddress(ModuleHandle, 'DwmIsCompositionEnabled');
if Assigned(DwmIsCompositionEnabledFunc) then
if DwmIsCompositionEnabledFunc(IsEnabled) = S_OK then
Result := IsEnabled;
finally
FreeLibrary(ModuleHandle);
end;
end;
end;
@TLama - 我發佈的是一個VCL函數:'DwmCompositionEnabled'。它僅在Vista +上調用DwmIsCompositionEnabled,否則返回false。 –
@Sertac,對不起。我的錯。我寧願停止同時做兩件事:-)收回我的評論(刪除)...並且由於問題被標記爲Delphi 7,這是正確的答案。 – TLama
@TLama - 我的評論並不能證明你是錯的。我只是想有點特別。 –
- 1. Windows 7 Aero主題
- 2. 處理在Windows 7 Aero主題卸載形式
- 3. 檢測WPF中的Aero或經典主題
- 4. Windows 8上的Delphi 7
- 5. 如何啓用Windows Aero主題時在標題欄上繪製位圖圖標
- 6. 問題與Aero玻璃在Delphi 7個應用程序
- 7. Windows 7的WPF主題?
- 8. Windows 7中的Delphi VCL「TaskDialog」問題
- 9. 如何獲取Windows 7主題名稱
- 10. 如何爲Windows 7創建主題?
- 11. 設備主題檢測在Windows Phone的
- 12. 經典Windows主題和Aero中的WPF控件大小
- 13. 如何檢索Windows的主題顏色?
- 14. WPF子窗口託管在第三方應用程序在Windows 7上不可見Aero主題
- 15. 如何強制WFP Toolkit使用Aero主題?
- 16. 如何獲得Windows 7 aero選擇顏色?
- 17. c#如何製作Windows 7 aero winform(模糊玻璃)?
- 18. 在Windows 7 64位企業版上安裝Delphi 2007的問題
- 19. 如何特別檢測用戶在Windows 7上閒置?
- 20. 任何已知的delphi問題,以測試Windows 7的兼容性
- 21. Windows 7與Delphi的集成
- 22. Delphi 7上的Quicktime 7
- 23. 如何使用Delphi 7檢測.net框架版本
- 24. 如何強制讓Windows Server 2003上的Windows 7主題爲WPF應用程序
- 25. 編輯標準的WPF Aero主題
- 26. WPF Aero主題的標準樣式
- 27. 覆蓋默認的Aero主題
- 28. 如何在不禁用UAC的情況下在Windows 7上運行Delphi 7?
- 29. 德爾福 - Windows Aero資源
- 30. 在Delphi 7上離開ComboBox的問題
如果你想知道當前的應用程序是否爲主題,你可以簡單地檢查'ThemeServices.ThemesEnabled'。 –
dwmapi.pas中還有'DwmCompositionEnabled'。 –
>如果你想知道當前的應用程序是否爲主題,你可以簡單地檢查ThemeServices.ThemesEnabled - 但如果它的主題是Windows 7簡體樣式或Windows XP? – Dmitry