• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

用Delphi模拟键盘输入/鼠标点击

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 模拟键盘我们用Keybd_event这个api函数,模拟鼠标按键用mouse_event函数.

Keybd_event函数能触发一个按键事件,也就是会产生一个WM_KEYDOWN或WM_KEYUP消息,一般用这两个消息来模拟一

次按键(按键的过程是:按下,然后弹起),但是没有直接用这个函数方便。
Keybd_event共有四个参数:
第一个为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab;
第二个参数为扫描码,一般不用设置,用0代替就行;
第三个参数为选项标志,如果为keydown则置0即可,如果为keyup则设成“KEYEVENTF_KEYUP”;
第四个参数一般也是置0即可。

例如用以下代码即可实现模拟按下i键,其中的$49表示i键的虚拟键值:

keybd_event($49,0,0,0);

keybd_event($49,0,KEYEVENTF_KEYUP,0);   

  

mouse_event最好配合setcursorpos(x,y)函数一起使用,先定位鼠标,再产生鼠标事件.
mouse_event有五个参数:
第一个为选项标志,为MOUSEEVENTF_LEFTDOWN时表示左键按下,为MOUSEEVENTF_LEFTUP表示左键松开,向系统发送相应消息;
第二三个参数分别表示x,y相对位置,一般可设为0,0;
第四五个参数并不重要,一般也可设为0,0。

mouse_event的示例代码:

setcursorpos(20,132);

mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); ...

上面的代码表示鼠标的双击,若要表示单击,用两个mouse_event即可(一次放下,一次松开)。  

注意
不管是模拟键盘还是鼠标事件,都要注意还原,即按完键要松开,一个keydown对应一个keyup;鼠标单击 完也要松开,不然可能影响程序的功能。

 

例子1:模拟按下'A'键
   keybd_event(65,0,0,0);
   keybd_event(65,0,KEYEVENTF_KEYUP,0);

  例子2:模拟按下'ALT+F4'键
   keybd_event(18,0,0,0);
   keybd_event(115,0,0,0);
   keybd_event(115,0,KEYEVENTF_KEYUP,0);
   keybd_event(18,0,KEYEVENTF_KEYUP,0);

   附:常用模拟键的键值对照表。

                      键盘键与虚拟键码对照表

      字母和数字键     数字小键盘的键      功能键        其它键
   键   键码     键   键码       键   键码     键      键码
   A   65       0   96        F1   112     Backspace    8
   B   66       1   97        F2   113     Tab       9
   C   67        2   98        F3   114     Clear      12
   D   68       3   99        F4   115     Enter      13
   E   69       4   100       F5   116     Shift      16
   F   70       5   101       F6   117     Control     17
   G   71       6   102       F7   118      Alt       18
   H   72       7   103       F8   119     Caps Lock    20
   I   73       8   104       F9   120     Esc       27
   J   74       9   105       F10  121     Spacebar    32
   K   75       *   106       F11  122     Page Up     33
   L   76       +   107       F12  123     Page Down    34
   M   77       Enter 108       --   --     End       35
   N   78       -   109       --   --      Home      36
   O   79       .   110       --   --      Left Arrow   37
   P   80       /   111       --   --      Up Arrow    38
   Q   81       --   --       --   --      Right Arrow   39
   R   82       --   --       --   --      Down Arrow    40
   S   83       --   --       --   --      Insert      45
   T   84       --   --       --   --      Delete      46
   U   85       --   --       --   --      Help       47
   V   86       --   --       --   --      Num Lock     144
   W   87          
   X   88      
   Y   89      
   Z   90      
   0   48      
   1   49      
   2   50       
   3   51       
   4   52       
   5   53       
   6   54       
   7   55       
   8   56       
   9   57


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
DelphiXE5常见问题解答发布时间:2022-07-18
下一篇:
Delphi如何实现窗口透明,但是窗口上的文字不透明发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap