我正在编写一个WPF应用程序,允许用户按下键盘上的键,然后存储虚拟键代码以便以后执行 目前,我的代码只捕获KeyChar
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方法使用虚拟键代码来识别程序在系统上执行所需的键。
我可以轻松捕获并执行这些单独的变量
但是如何将keyChar转换为虚拟键码以便在单独的窗口中存储然后执行?
用户32 DLL方法.. https://www.pinvoke.net/default.aspx/user32.keybd_event
答案 0 :(得分:0)
您可以使用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);
}