2011-09-24 2 views
0

확인하기 위해 다음 코드를 사용하려고 노력 원인 DWMApi.dll이 없기 때문에 응용 프로그램이 충돌합니다. 나는 또한 this code을 시도했지만 2 개의 AV를 연속으로 생성합니다. 어떻게해야합니까? Delphi 2010을 사용 중입니다. :)는 윈도우 에어로가 활성화 된 경우 오류

답변

4

버전이 잘못되었습니다. Vista/2008 서버 버전 6.0입니다. 귀하의 테스트가 있어야한다 :

CheckWin32Version(6,0) 

난 당신이 델파이 2010 사용하고 이상이있는 경우에 당신은 단순히에서 DwmCompositionEnabled 함수를 호출해야한다고 생각 내장 Dwmapi 단위. 이렇게하면 버전 확인과 지연된 바인딩이 구성됩니다. JEDI 필요 없음.


편집 : 텍스트 질문을 편집하기 전에 작성되었습니다 아래.

아마도 가장 쉬운 방법은 Windows 버전을 확인하는 것입니다. DwmIsCompositionEnabled에 전화하려면 Win32MajorVersion>=6 (즉, Vista 또는 2008 서버)이 필요합니다.

자신을 바인딩하는 경우 LoadLibraryDWMApi.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가 필요합니다.

관련 문제