C# 模拟键盘输入,支持大小写与数字
最近遇到一个需求,就是将接收到的字符串模拟真人键盘输入,需要支持数字,大小写的英文字母。估记录下来分享。
internal class Program
{
[DllImport("user32.dll", SetLastError = true)]
private static extern uint MapVirtualKey(uint uCode, uint uMapType);
[DllImport("user32.dll")]
private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, IntPtr dwExtraInfo);
private static void Main(string[] args)
{
Thread.Sleep(5 * 1000);
string input = "123456789 TestDemo";
foreach (char c in input)
{
if (char.IsUpper(c))
{
byte vk = (byte)System.Windows.Forms.Keys.ShiftKey;
byte scan = (byte)MapVirtualKey(vk, 0);
// 模拟按下 Shift 键
keybd_event(vk, scan, 0, IntPtr.Zero);
}
byte key = (byte)char.ToUpper(c);
byte scanCode = (byte)MapVirtualKey(key, 0);
// 模拟按下
keybd_event(key, scanCode, 0, IntPtr.Zero);
// 模拟松开
keybd_event(key, scanCode, 2, IntPtr.Zero);
if (char.IsUpper(c))
{
// 模拟松开 Shift 键
keybd_event((byte)System.Windows.Forms.Keys.ShiftKey, scanCode, 2, IntPtr.Zero);
}
}
}
}