Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Vista/Win7 Aero Farbe auslesen

  Alt 5. Feb 2010, 17:29
Ich finde, man sollte die Windows Version überhaupt nicht prüfen.
Das Gleiche gilt auch für die Unit DWMApi.
Die Funktion IniDWMFuncs sollte eigentlich so aussehen:
Delphi-Quellcode:
function InitDWMFuncs: HRESULT;
begin
  Result := S_FALSE;
  hDWMDLL := LoadLibrary('dwmapi.dll');

  if hDWMDLL <> 0 then
  begin
      @DwmIsCompositionEnabled := GetProcAddress(hDWMDLL, 'DwmIsCompositionEnabled');
      @DwmExtendFrameIntoClientArea := GetProcAddress(hDWMDLL, 'DwmExtendFrameIntoClientArea');
      @DwmEnableBlurBehindWindow := GetProcAddress(hDWMDLL, 'DwmEnableBlurBehindWindow');
      @DwmDefWindowProc:= GetProcAddress(hDWMDLL, 'DwmDefWindowProc');
      @DwmGetColorizationColor:= GetProcAddress(hDWMDLL, 'DwmGetColorizationColor');
      @DwmEnableComposition:= GetProcAddress(hDWMDLL, 'DwmEnableComposition');

      if Assigned(@DwmIsCompositionEnabled) and
      ....
      Assigned(@DwmEnableComposition) then
      // DLL konnte geladen werden und alle Funktionen sind verfügbar
         Result := S_OK
      else
         UnloadDWMFuncs;
  end;
end;
Ohne die Windows-Version ist es viel einfacher und kompatibler.
Vielleicht ist die DLL ja irgendwann auch mal unter Windows XP verfügbar.
(ich weiss, sehr unwahrscheinlich)

Fazit: nicht die Windows Version prüfen, sondern prüfen ob eine bestimmte Funktionalität oder API vorhanden ist.
Andreas
  Mit Zitat antworten Zitat