2014-01-20 6 views
4

게임 중에 스크린 샷을 찍는 프로그램을 만들고 있습니다. 바로 가기 키를 누르면 작동하지만 전체 화면이 열린 게임에서는 키를 감지하지 못합니다.전체 화면 게임에서 글로벌 핫키가 작동하지 않습니다.

내 코드 :

protected override void WndProc(ref Message m) 
{ 
    const int WM_HOTKEY = 0x0312; 

    switch (m.Msg) 
    { 
     case WM_HOTKEY: 
     { 
      if ((short)m.WParam == 1) 
      { 
       start = DateTime.Now; 
       progressBar1.Maximum = 1; 
       progressBar1.Step = 1; 
       progressBar1.Value = 0; 

       DoRequest(); 
      } 
      break; 
     } 

     default: 
     { 
      base.WndProc(ref m); 
      break; 
     } 
    } 
} 

내가 사용하는 글로벌 키를 등록 :

RegisterHotKey(this.Handle, 1, (int)KeyModifier.None, Keys.F11); 

도움말 - 나 :/

해결! 해결되었으므로이 프로젝트를 통해 수정했습니다. http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook

감사합니다.

답변

2

대부분의 게임의 문제점 (전부는 아님)은 DirectInput (DirectX)을 사용하고 Windows 메시지 펌프가 아닌 키 스트로크를 읽는 문제가 있습니다. 또한 게임에 키를 보내고 DirectX 키 코드를보고 해결 한 동일한 문제를 경험 한 음성 인식을 사용하여 응용 프로그램을 작성했습니다. ref: DirectInput

+0

내 코드에서 어떻게 구현할 수 있습니까? 나는 제대로하지 못한다. DirectX의 F11 키를 넣으려고했는데 작동하지 않았다. –

+0

다음 링크 http://msdn.microsoft.com/en-us/library/windows/desktop/bb153252(v=vs.85).aspx가 도움을 줄 수 있는지 확인하십시오. –

+0

고마워, 나는이 프로젝트를 통해 관리했다 : http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook –

0

비슷한 문제가 있었지만 관리자 권한으로 내 프로그램을 실행하여 해결했습니다.