2

Delphi 7のコードによって、ユーザーが自分のオペレーティングシステムでWindows Aeroテーマを実行していることをどのように検出しますか?

4

1 に答える 1

6

使用する必要のある関数はですがDwmapi.DwmIsCompositionEnabled、Delphi 7に付属し、Delphi 7以降にリリースされたVistaで追加されたWindowsヘッダー変換には含まれていません。また、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;
于 2013-02-06T15:28:35.030 に答える