제목은 거의 이해할 수 없다는 것을 압니다. 그 이유는 대부분 한 줄로 설명하기가 쉽지 않기 때문입니다. 그래서 여기에 상황이 있습니다 :DWM/Aero가 활성화되어 있고 해당 코드가 2000/XP/Vista/7에 대해 동일한 바이너리에 존재하는지 확인
바이너리가 Windows 2000 이상을 대상으로하는 프로그램이 있습니다. 이제는 사용자가 Vista/7에서 실행되는지 확인하는 코드를 추가하고, 그렇다면 Aero/DWM이 사용되는지 확인하십시오. 이를 기반으로 특정 플랫폼과 관련이없는 몇 가지 사항을 비활성화하고 다른 기능을 사용하도록 설정합니다. 내 주요 문제는 Visual C++ 2008에서 DwmIsCompositionEnabled를 호출하기 위해 dwmapi.lib 파일을 추가하고 컴파일해야한다는 것입니다. Vista 나 7 이외의 다른 프로그램에서 바이너리를 실행하면 "구성 요소를 찾을 수 없습니다 .dwmapi.dll을 찾을 수 없기 때문에 응용 프로그램을 시작하지 못했습니다"오류가 발생합니다. 물론 이것은 DWM이 새롭고 구형 플랫폼에서는 사용할 수 없기 때문에 발생할 것으로 예상됩니다.
내 질문은 다음과 같습니다. 어떻게 든이 문제를 해결할 수 있습니까? 모든 OS 버전에 대해 하나의 바이너리가 있으며 해당 DWM 검사 코드가 포함되어 있습니까? 이 프로그램은 Visual Studio 2008, Visual C++에서 MFC를 사용하여 작성되었습니다.
필자는 직접 해본 적이 없지만 특정 조건이 주어진 주 내부에있는 다른 이진 파일에 윈도우를 연기 할 수 있습니다 (가장 일반적인 사용은 통합 32 비트/64 비트 이진이며 프로세스 탐색기는이를 사용하여 실행합니다 예를 들어 32 비트 바이너리에서 64 비트 모드로). – ewanm89
Microsoft는이 기술을 side-by-side 어셈블리라고 부르는 것 같으며 MSDN http://msdn.microsoft.com/en-us/library/ms235531.aspx에 문서화되어 있습니다. 대부분의 설명서는이 문서에서 찾은 것 같습니다. 그것을 사용하여 여러 라이브러리 버전을 캡슐화하는 DLL을 만드는 방법을 참조하십시오. – ewanm89
의견에 감사드립니다. 너는 나를 정답으로 인도했다. – enriquein