摘自《31天学会CRM项目开发
使用C#调用Windows API使程序模拟键盘输入,也可模拟按下快捷键。本例中,单击“模拟输入”按钮,可录入字符“abcde123456”,单击“Ctrl+V”按钮可实现粘贴功能,效果如图16-2所示。
主要开发步骤如下:
(1) 引用Windows API函数keybd_event(),通过它可模拟键盘录入。
代码片段16-12
[DllImport("user32.dll")]
private static extern void keybd_event(
byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
代码片段16-13
Dictionary keycodedic;
keycodedic = new Dictionary();
keycodedic.Add("A", 0x41);
keycodedic.Add("B", 0x42);
……
keycodedic.Add(".", 110);
keycodedic.Add("LEFT", 0x25);
keycodedic.Add("UP", 0x26);
keycodedic.Add("RIGHT", 0x27);
keycodedic.Add("DOWN", 40);
keycodedic.Add("-", 0x6d);
代码片段16-14
public static bool Input(string str)
{
foreach (char ch in str.ToUpper())
{
//模拟单击键,可规避连续输入键值时遗漏或延长Thread.Sleep(50);
keybd_event(0x1, 0, 1, 0);
keybd_event(keycodedic[ch.ToString()], 0, 1, 0);
}
return false;
}
代码片段16-15
public static void CtrlV ()
{
keybd_event(0x11, 0, 0, 0);
keybd_event(0x56, 0, 0, 0);
keybd_event(0x56, 0, KEYEVENTF_KEYUP, 0);
keybd_event(0x11, 0, KEYEVENTF_KEYUP, 0);
}
代码片段16-16
public static void Enter()
{
keybd_event(0xD, 0, 0, 0);
Thread.Sleep(50);
keybd_event(0xD, 0, KEYEVENTF_KEYUP, 0);
}