我正在编写一个 WPF 应用程序,该应用程序允许用户按键盘上的键,然后存储虚拟键代码以供以后执行目前,我的代码只捕获键字符
private void Window_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
System.Windows.MessageBox.Show("Key char : " + e.Key);
}
在稍后阶段,代码以类似于此的方式执行...
else if(e.Result.Text.Equals("windows"))
{
//windows key down
keybd_event((byte)VK_LWIN, 0x5B, 0, 0);
//windows key up
keybd_event((byte)VK_LWIN, 0x5B, KEYEVENTF_KEYUP, 0);
}
keybd_event 方法使用虚拟键代码来标识程序需要在系统上执行的键。
我可以轻松捕获和执行这些单独的变量
但是如何将键字符转换为虚拟键代码以存储然后在单独的窗口中执行?
用户 32 DLL 方法..https://www.pinvoke.net/default.aspx/user32.keybd_event
你可以使用KeyInterop
类。这包含用于在 .Net Keys 和 VKeys 之间进行转换的静态方法:
int vkey;
private void Window_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
vkey = System.Windows.Input.KeyInterop.VirtualKeyFromKey(e.Key);
System.Windows.MessageBox.Show("Key char : " + e.Key);
}
{
keybd_event((byte)vkey, 0x5B, 0, 0);
}