Delphi7
Windows电脑
打开Delphi7集成开发环境,并在默认窗体上放置一个Edit1编辑框和Button1文本框。
双击窗体的Button1按钮,进入Button1的OnClick响应方法,在方法中编写如下代码:procedure TForm1.Button1Click(Sender: TObject);begin PostMessage(Edit1.Handle,WM_KEYDOWN,VkKEYScan('a'),0);end;解释一下:PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam)hWnd:其窗口程序将接收消息的窗口的句柄。Msg:指定被发送的消息。 wParam:指定附加的消息指定信息。 IParam:指定附加的消息指定信息。VkKEYScan('a')是键盘a键的硬件扫描码
F9运行程序后,点击Button1按钮会发现Edit1的内容变成a
关闭程序后,再向窗体添加一个Edit2文本框,和Button2按钮,设置Edit2的AutoSelect属性为False。
双击窗体的Button1按钮,进入Button1的OnClick响应方法,模拟键盘按钮按下抬起的过程在方法中编写如下代码:procedure TForm1.Button2Click(Sender: TObject);begin Edit2.SetFocus; Keybd_Event(ord('R'),MapVirtualKey(ord('R'),0),0,0); Keybd_Event(ord('R'),MapVirtualKey(ord('R'),0),KEYEVENTF_KEYUP,0);end;解释一下:keybd_event(mKey, mScanCode, mFlags, 0)第一个为按键的虚拟键值,第二个参数为扫描码第三个参数为选项标志第四个参数一般置0即可。MapVirtualKey(ord('R'),0)获取硬件扫描码
F9运行程序后,点击Button2按钮会发现Edit2的内容变成rEdit2
模拟按下组合按键,更改Button2的OnClick的事件响应方法如下:procedure TForm1.Button2Click(Sender: TObject);begin Edit2.SetFocus; Keybd_Event(VK_LSHIFT,MapVirtualKey(VK_LSHIFT,0),0,0); Keybd_Event(ord('R'),MapVirtualKey(ord('R'),0),0,0); Keybd_Event(VK_LSHIFT,MapVirtualKey(VK_LSHIFT,0),KEYEVENTF_KEYUP,0);end;模拟按住Shift再按R键
F9运行程序后,点击Button2按钮会发现Edit2的内容变成REdit2
使用Keybd_Event方法模拟按键运行程序时,要注意输入法切换到英文状态