全球热键无法在全屏游戏中工作

问题描述:

我正在创建一个截取游戏截图的程序,不在游戏中。当我按下它的热键时,它将以全屏方式打开游戏,但它不会检测到密钥。全球热键无法在全屏游戏中工作

我的代码:

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

谢谢大家!

大多数游戏(并非所有游戏)的问题是,它们使用DirectInput(DirectX),而不是Windows消息泵来读取击键。我还编写了一个使用语音识别的应用程序,向游戏发送密钥,并且遇到了通过查看DirectX键码解决的相同问题。 ref: DirectInput

+0

我该如何在我的代码中实现这个功能?我不明白,我试图把DirectX的F11键,并没有工作。 –

+0

请参阅以下链接http://msdn.microsoft.com/en-us/library/windows/desktop/bb153252(v=vs.85).aspx可以帮助您。 – 2014-01-21 05:09:50

+0

谢谢,我通过这个项目进行管理:http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook –

我有一个类似的问题,但我解决了它通过运行我的程序与管理员权限。