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.