【问题标题】:GetKeyboardState not working in remote desktop full screen modeGetKeyboardState 在远程桌面全屏模式下不起作用
【发布时间】:2012-04-24 15:46:07
【问题描述】:

我正在使用 win api GetKeyboardState 来跟踪系统中的所有键盘按下。

这很好用,但是它在远程桌面上的行为很有趣。

如果远程桌面处于 Windows 模式,则可以正常工作,但如果远程桌面全屏,则无法正常工作。

有没有人有这方面的经验或没有如何在全屏远程桌面中获得按键?

谢谢

【问题讨论】:

  • 请详细说明“它不起作用”是什么意思。请注意,GetKeyboardState 仅返回本地状态,而不是全局状态,因此它不会跟踪整个系统的键盘按下情况。
  • 我的意思是,您似乎无法使用挂钩从远程桌面全屏捕获键盘键。它可能会绕过它们。
  • 它以前不应该工作。 GetKeyboardState 无法从其他线程组捕获状态。 (在没有附件游戏的情况下,一个线程组基本上是一个线程。)

标签: c# .net winapi


【解决方案1】:

使用钩子,您将在任何其他程序之前收到键状态,您甚至可以取消击键。 使用 user32.DLL 中的“SetWindowsHookExW”润湿一个挂钩,使用“UnhookWindowsHookEx”删除一个。 示例代码很多,试试这个http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook

【讨论】:

  • 我在我的应用程序关闭代码项目codeproject.com/Articles/7294/… 中使用了类似的示例代码我已经尝试过您的示例,它也不适用于全屏远程桌面。
  • 那么你就有问题了,因为你的全屏远程桌面可能正在使用“KeyboardHookProc”功能,它正在取消所有击键。我会尝试使用 GetAsyncKeyState,如果它不起作用,我就不知道了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多