none
EXE 파일속성 -> 호환성 유지 하는 법 RRS feed

  • 질문

  • 안녕하세요.
    화면캡쳐 프로그램을 만들었는데 윈도우XP 에서는 온라인 게임 실행 중에도 문제 없이 캡쳐가 되는데 
    윈도우7 에서는 온라인 게임 실행시 바탕화면과 게임화면이 검게 (블랙 이미지) 캡쳐가 되는  문제가 있어
    다이렉트X 를 이용한 캡쳐 소스로 변경까지 해 보았지만..끝내 해결 하지 못하고 
    제작한 EXE 파일의 속성 -> 호환성 ->  '바탕화면 구성 사용 안함' 을 체크 한 후 실행시켜,  
    윈도우7 의  온라인 게임 실행 중에도 정상 캡쳐가 되게 해놨습니다.
    그런데 문제는 이렇게 호환성 속성을 체크 한 상태의 EXE 파일을 다른 폴더로 복사를 하면
    체크가 풀려 버려 복사한 폴더에서 다시 체크를 해줘야 하는 번거로움이 생기던데...
    혹시 c# 소스에서 '바탕화면 구성 사용 안함' 을  체크된 상태로  EXE 를 만들 수 있을런지요?
    조언 부탁드립니다. (--)(__)
    환경 :  C# / VS2010 / 프레임웍2.0 / 윈도우7
    2013년 1월 28일 월요일 오전 7:51

답변

  • 필요한 Namespace

    using System.Runtime.InteropServices; 

     

    클래스 상단에 아래와 같이 선언

    [DllImport("dwmapi.dll")] 

    private static extern int DwmIsCompositionEnabled(ref bool enabled); 

     

    const uint DWM_EC_DISABLECOMPOSITION = 0; 

    const uintDWM_EC_ENABLECOMPOSITION = 1; 

     

    [DllImport("dwmapi.dll", EntryPoint = "DwmEnableComposition")] 

    private static extern uint DwmEnableComposition(uint compositionAction); 

     

    실제 사용방법

    Form_Load:

     DwmEnableCompotion(DWM_EC_DISABLECOMPOSITION);

     

    FormClosed:

    DwmEnableCompotion(DWM_EC_ENABLECOMPOSITION );

     

     

    위와같이 코딩하시면 작동할것 같습니다.

    실행시 속성을 바꾸는것이기 때문에 exe파일속성에는 변화가 없습니다.

    출처: http://stackoverflow.com/questions/12175994/flickering-in-dot-plot-on-windows-7-aero-theme

    • 답변으로 제안됨 Sungman KOMVP 2013년 1월 29일 화요일 오전 1:48
    • 답변으로 표시됨 열린문서 2013년 1월 29일 화요일 오전 6:07
    2013년 1월 28일 월요일 오전 9:09

모든 응답

  • 필요한 Namespace

    using System.Runtime.InteropServices; 

     

    클래스 상단에 아래와 같이 선언

    [DllImport("dwmapi.dll")] 

    private static extern int DwmIsCompositionEnabled(ref bool enabled); 

     

    const uint DWM_EC_DISABLECOMPOSITION = 0; 

    const uintDWM_EC_ENABLECOMPOSITION = 1; 

     

    [DllImport("dwmapi.dll", EntryPoint = "DwmEnableComposition")] 

    private static extern uint DwmEnableComposition(uint compositionAction); 

     

    실제 사용방법

    Form_Load:

     DwmEnableCompotion(DWM_EC_DISABLECOMPOSITION);

     

    FormClosed:

    DwmEnableCompotion(DWM_EC_ENABLECOMPOSITION );

     

     

    위와같이 코딩하시면 작동할것 같습니다.

    실행시 속성을 바꾸는것이기 때문에 exe파일속성에는 변화가 없습니다.

    출처: http://stackoverflow.com/questions/12175994/flickering-in-dot-plot-on-windows-7-aero-theme

    • 답변으로 제안됨 Sungman KOMVP 2013년 1월 29일 화요일 오전 1:48
    • 답변으로 표시됨 열린문서 2013년 1월 29일 화요일 오전 6:07
    2013년 1월 28일 월요일 오전 9:09
  • 감사합니다. (--)(__)
    2013년 1월 29일 화요일 오전 6:07