2

我正在开发一个网络系统(在 C# 中),在一台计算机上,我通过低级挂钩接收键盘输入,然后将输入传输到必须注入的另一台计算机。

该挂钩在 KeyEventArgs 类中提供键盘输入。要将其注入目标计算机,我需要使用带有 SendInput 的 KEYBDINPUT 结构。

KeyEventArgs.KeyCode 或 KeyValue 与 KEYBDINPUT.wVk 和 wScan 之间似乎并不容易匹配。我还尝试了 MapVirtualKey 的一些组合。

或者,我可以在源计算机上将 KeyEventArgs 转换为 Windows 键消息(WM_KEYUP/DOWN 与 wParam 和 lParam),但我面临类似的困难。

这里的任何人都可以帮助解决这两种情况吗?

4

1 回答 1

0

您可能想在这里查看最近的答案,我建议使用InputSimulator作为其他低级工作的替代方法。这Win32 SendInput直接使用 API。

这使用VirtualKeyCode,所以既然你有KeyEventArgs你就可以使用这个KeyValue属性:

InputSimulator.SimulateKeyPress(keyEventArgs.KeyValue);

如果你只有一个System.Key,你可以转换成一个VirtualKey

http://msdn.microsoft.com/en-us/library/system.windows.input.keyinterop.virtualkeyfromkey.aspx

如何将“System.Windows.Input.Key”转换为“System.Windows.Forms.Keys”?

于 2012-04-30T08:29:20.450 回答