用应用程序模拟键盘和鼠标按键

原创 2011年10月18日 15:42:37
 Windows大行其道的今天,windows界面程序受到广大用户的欢迎。对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制。有时,对于繁杂的,或重复性的输入操作,我们能否通过编制程序来代替手工输入,而用程序来模拟键盘及鼠标的输入呢?答案是肯定的。这里主要是通过两个Windows API函数来实现的。下面以 VC++为例来介绍一下如何实现这两个功能。
模拟键盘我们用Keybd_event这个api函数,模拟鼠标按键用mouse_event函数。在VC里调用api函数是既简单又方便不过的事了。
  首先介绍一下Keybd_event函数。Keybd_event能触发一个按键事件,也就是说回产生一个WM_KEYDOWN或WM_KEYUP消息。当然也可以用产生这两个消息来模拟按键,但是没有直接用这个函数方便。Keybd_event共有四个参数,第一个为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab。第二个参数为扫描码,一般不用设置,用0代替就行第三个参数为选项标志,如果为keydown则置0即可,如果为keyup则设成“KEYEVENTF_KEYUP”,第四个参数一般也是置0即可。用如下代码即可实现模拟按下键,其中的XX表示XX键的虚拟键值,在这里也就是各键对应的键码,如'A'=65
keybd_event(65,0,0,0);
keybd_event(65,0,KEYEVENTF_KEYUP,0); ...
mouse_event最好配合SetCursorPos(x,y)函数一起使用,与Keybd_event类似,mouse_event有五个参数,第一个为选项标志,为MOUSEEVENTF_LEFTDOWN时表示左键按下为MOUSEEVENTF_LEFTUP表示左键松开,向系统发送相应消息。第二三个参数分别表示x,y
相对位置,一般可设为0,0,第四五个参数并不重要,一般也可设为0,0。若要得到Keybd_event和mouse_event函数的更详细的用法,可以查阅msdn或delphi帮助。

下面是关于mouse_event的示例代码:

POINT lpPoint;
GetCursorPos(&lpPoint);
SetCursorPos(lpPoint.x, lpPoint.y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

上面的代码表示鼠标的双击,若要表示单击,用两个mouse_event即可(一次放下,一次松开)。  
注意,不管是模拟键盘还是鼠标事件,都要注意还原,即按完键要松开,一个keydown对应一个keyup;鼠标单击完也要松开, 不然可能影响程序的功能。  
好了,希望本文能让你对模拟键盘和鼠标按键有个初步的了解,如果想更深入的了解可以查阅msdn在线帮助,并多多动手实践,也许会对你有很大的帮助。

如何用应用程序模拟键盘和鼠标按键

在Windows大行其道的今天,windows界面程序受到广大用户的欢迎。对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制。有时,对于繁杂的,或重复性的输入操作,我们能否通过编制程序来代替手工输...
  • hhaoma
  • hhaoma
  • 2008-10-28 23:52:00
  • 4029

MFC中热键&模拟键盘&模拟鼠标的使用

1. 热键的使用 热键不用了的话一定要卸载,否则下次启动时会被占用。 函数原型 注册函数 BOOL RegisterHotKey( HWND hWnd, // handle to window int...
  • ccfxue
  • ccfxue
  • 2016-07-22 11:59:02
  • 1784

ruby实现按键精灵的功能

先说下利用了AutoItX3.dll这个API,这个东西没有怎么办,ruby的watir GEM包里自带这个dll。 如果出现 “unknown OLE server: ‘AutoItX3.Contr...
  • dyllove98
  • dyllove98
  • 2013-06-01 18:45:52
  • 1497

在windows下模拟鼠标键盘输入的几种方法 (附带源代码)

在windows下模拟鼠标键盘输入的几种方法    最近小叮咚使用的服务器(第3方的asp服务器,不是iis)在启动后总是不能自动运行,可能里面有Bug,需要点击启动按钮后才能连接到internet上...
  • accesine960
  • accesine960
  • 2004-12-10 11:24:00
  • 9916

懒人工具4 -- 模拟键盘鼠标 自动化操作 xdotool

按键精灵:适用于win qt:Qt是一个跨平台应用程序框架 sikuli :win和linux都可用,需要Java支持。利用图像识别和Python编写的软件; xdotool:适用于linux ...
  • qq_25773973
  • qq_25773973
  • 2016-06-17 14:46:43
  • 2008

windows 模拟按键与鼠标

windows 模拟按键与鼠标 函数功能:模拟按键或鼠标。一次完整的按键由KEYEVENTF_KEYDOWN和KEYEVENTF_KEYUP两个子事件组成。 函数原型: VOID keybd_eve...
  • chuchus
  • chuchus
  • 2014-06-25 15:32:52
  • 2016

驱动中实现模拟键盘按键

标 题: 驱动中实现模拟键盘按键作 者: luocong在ring3中实现模拟键盘按键有N^N种方式,比如SendInput()...
  • iiprogram
  • iiprogram
  • 2007-04-26 15:21:00
  • 5072

CMD批处理模拟鼠标按键事件

  • 2012年12月19日 12:01
  • 168KB
  • 下载

C#按键精灵,低级鼠标键盘Hook及发送按键 带源码

  • 2015年03月17日 12:03
  • 251KB
  • 下载
收藏助手
不良信息举报
您举报文章:用应用程序模拟键盘和鼠标按键
举报原因:
原因补充:

(最多只允许输入30个字)