项目需要在触摸屏上增加一个虚拟键盘。记录下过程中遇到的问题及解决方法。
1.模拟按键
网上找到如下3种方法
1)SendKeys.Send
测试单独的shift不好用,所以最终未采纳此方法
SendKeys.Send("^{E}");//shift+e
SendKeys.Send("{Enter}");
2)keybd_event
最终选择了这个方法,简单有效。
虚拟按键对照表:虚拟按键对照表
https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
[DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true)]
public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
[DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true)]
public static extern void keybd_event(Keys bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
public static uint KEYEVENTF_KEYDOWN = 0;// 键按下 KEYEVENTF_KEYDOWN = 0
public static uint KEYEVENTF_KEYUP = 2;//键弹起 KEYEVENTF_KEYUP = 2
keybd_event(0x14, 0, KEYEVENTF_KEYDOWN, 0)