확인하기 위해 다음 코드를 사용하려고 노력 원인 DWMApi.dll이 없기 때문에 응용 프로그램이 충돌합니다. 나는 또한 this code을 시도했지만 2 개의 AV를 연속으로 생성합니다. 어떻게해야합니까? Delphi 2010을 사용 중입니다. :)는 윈도우 에어로가 활성화 된 경우 오류
0
A
답변
4
버전이 잘못되었습니다. Vista/2008 서버 버전 6.0입니다. 귀하의 테스트가 있어야한다 :
CheckWin32Version(6,0)
난 당신이 델파이 2010 사용하고 이상이있는 경우에 당신은 단순히에서 DwmCompositionEnabled
함수를 호출해야한다고 생각 내장 Dwmapi
단위. 이렇게하면 버전 확인과 지연된 바인딩이 구성됩니다. JEDI 필요 없음.
편집 : 텍스트 질문을 편집하기 전에 작성되었습니다 아래.
아마도 가장 쉬운 방법은 Windows 버전을 확인하는 것입니다. DwmIsCompositionEnabled
에 전화하려면 Win32MajorVersion>=6
(즉, Vista 또는 2008 서버)이 필요합니다.
자신을 바인딩하는 경우 LoadLibrary
을 DWMApi.dll
으로 호출하고 성공한 경우 GetProcAddress
을 호출하여 바인딩합니다. 성공하면 성공합니다. 하지만, 내가 말했듯이, 당신 자신이 바인딩을 처리하지 않으므로, 아마도 버전 체크가 가장 간단 할 것이다.
function AeroEnabled: boolean;
var
enabled: bool;
begin
if Win32MajorVersion>=6 then begin
DwmIsCompositionEnabled(enabled);
Result := enabled;
end else begin
Result := False;
end;
end;
주, 나는 즉 명시 적 링크, 라이브러리 바인딩을하고있다 있으리라 믿고있어. 그렇지 않다면 링크 할 @ RRUZ의 코드에서와 마찬가지로 LoadLibrary/GetProcAddress가 필요합니다.