用Delphi模拟键盘输入

前端之家收集整理的这篇文章主要介绍了用Delphi模拟键盘输入前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

   在Windows大行其道的今天,windows界面程序受到广大用户的欢迎。对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制。有时,对于繁杂 的,或重复性的操作,我们能否通过编制程序来代替手工输入,而用程序来模拟键盘及鼠标的输入呢?答案是肯定的。这主要是通过两个API函数来实现的。   

  下面以Delphi为例来介绍一下如何实现这两个功能。模拟键盘我们用Keybd_event这个api函数,模拟鼠标按键用mouse_event函数。大家不用担心,在delphi里调用api函数是很方便的事。   

  先介绍一下Keybd_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);

  

  mouse_event最好配合setcursorpos(x,y)函数一起使用,与 Keybd_event类似,mouse_event有五个参数,第一个为选项标志,为MOUSEEVENTF_LEFTDOWN时表示左键按下,为 MOUSEEVENTF_LEFTUP表示左键松开,向系统发送相应消息。第二三个参数分别表示x,y相对位置,一般可设为0,第四五个参数并不重 要,一般也可设为0,0。若要得到Keybd_event和mouse_event函数的更详细的用法,可以查阅msdn或delphi帮助。下面是关于 mouse_event的示例代码

 

setcursorpos(20,132);

mouse_event(MOUSEEVENTF_LEFTDOWN,255)">mouse_event(MOUSEEVENTF_LEFTUP,0); ...

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

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

 

模拟键盘输入首先要用到一个API函数:keybd_event。
  我们是菜鸟,所以不必具体去理解它的详细用法,只要按以下方法使用即可了!呵呵!
  模拟按键有两个基本动作,即按下键和放开按键,所以我们每模拟一次按键就要调用两次该API函数,其方法是:
  
  例子1:模拟按下'A'键
   keybd_event(65,0);
   keybd_event(65,70); font-family:simsun; font-size:14px">   例子2:模拟按下'ALT+F4'键
   keybd_event(18,0);
   keybd_event(115,0);
   keybd_event(18,255)">   附:常用模拟键的键值对照表。

                      键盘键与虚拟键码对照表

      字母和数字键     数字小键盘的键       功能键         其它键
      键   键码     键   键码       键   键码     键      键码
      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

   好了,希望本文能让你对模拟键盘和鼠标按键有个初步的了解,如果想更深入的了解其中的奥妙,可以查阅详实的msdn在线帮助,并多多动手实践。

附:更详细的键值表:

@H_404_120@十六进制值 @H_404_120@十进制值 @H_404_120@对应按键 @H_404_120@VK_LBUTTON @H_404_120@01 @H_404_120@1 @H_404_120@鼠标的左键 @H_404_120@VK_RBUTTON @H_404_120@02 @H_404_120@2 @H_404_120@鼠标的右键 @H_404_120@VK-CANCEL @H_404_120@03 @H_404_120@3 @H_404_120@Ctrl+Break(通常不需要处理) @H_404_120@VK_MBUTTON @H_404_120@04 @H_404_120@4 @H_404_120@鼠标的中键(三按键鼠标) @H_404_120@VK_BACK @H_404_120@08 @H_404_120@8 @H_404_120@Backspace键 @H_404_120@VK_TAB @H_404_120@09 @H_404_120@9 @H_404_120@Tab键 @H_404_120@VK_CLEAR @H_404_120@0C @H_404_120@12 @H_404_120@Clear键(Num Lock关闭时的数字键盘5) @H_404_120@VK_RETURN @H_404_120@0D @H_404_120@13 @H_404_120@Enter键 @H_404_120@VK_SHIFT @H_404_120@10 @H_404_120@16 @H_404_120@Shift键 @H_404_120@VK_CONTROL @H_404_120@11 @H_404_120@17 @H_404_120@Ctrl键 @H_404_120@VK_MENU @H_404_120@18 @H_404_120@Alt键 @H_404_120@VK_PAUSE @H_404_120@19 @H_404_120@Pause键 @H_404_120@VK_CAPITAL @H_404_120@14 @H_404_120@20 @H_404_120@Caps Lock键 @H_404_120@VK_ESCAPE @H_404_120@1B @H_404_120@27 @H_404_120@Ese键 @H_404_120@VK_SPACE @H_404_120@32 @H_404_120@Spacebar键 @H_404_120@VK_PRIOR @H_404_120@21 @H_404_120@33 @H_404_120@Page Up键 @H_404_120@VK_NEXT @H_404_120@22 @H_404_120@34 @H_404_120@Page Domw键 @H_404_120@VK_END @H_404_120@23 @H_404_120@35 @H_404_120@End键 @H_404_120@VK_HOME @H_404_120@24 @H_404_120@36 @H_404_120@Home键 @H_404_120@VK_LEFT @H_404_120@25 @H_404_120@37 @H_404_120@LEFT ARROW 键(←) @H_404_120@VK_UP @H_404_120@26 @H_404_120@38 @H_404_120@UP ARROW键(↑) @H_404_120@VK_RIGHT @H_404_120@27 @H_404_120@39 @H_404_120@RIGHT ARROW键(→) @H_404_120@VK_DOWN @H_404_120@28 @H_404_120@40 @H_404_120@DOWN ARROW键(↓) @H_404_120@VK_Select @H_404_120@29 @H_404_120@41 @H_404_120@Select键 @H_404_120@VK_PRINT @H_404_120@2A @H_404_120@42 @H_404_120@ @H_404_120@VK_EXECUTE @H_404_120@2B @H_404_120@43 @H_404_120@EXECUTE键 @H_404_120@VK_SNAPSHOT @H_404_120@2C @H_404_120@44 @H_404_120@Print Screen键(抓屏) @H_404_120@VK_Insert @H_404_120@2D @H_404_120@45 @H_404_120@Ins键(Num Lock关闭时的数字键盘0) @H_404_120@VK_Delete @H_404_120@2E @H_404_120@46 @H_404_120@Del键(Num Lock关闭时的数字键盘.) @H_404_120@VK_HELP @H_404_120@2F @H_404_120@47 @H_404_120@Help键 @H_404_120@VK_0 @H_404_120@30 @H_404_120@48 @H_404_120@0键 @H_404_120@VK_1 @H_404_120@31 @H_404_120@49 @H_404_120@1键 @H_404_120@VK_2 @H_404_120@50 @H_404_120@2键 @H_404_120@VK_3 @H_404_120@51 @H_404_120@3键 @H_404_120@VK_4 @H_404_120@52 @H_404_120@4键 @H_404_120@VK_5 @H_404_120@53 @H_404_120@5键 @H_404_120@VK_6 @H_404_120@54 @H_404_120@6键 @H_404_120@VK_7 @H_404_120@55 @H_404_120@7键 @H_404_120@VK_8 @H_404_120@56 @H_404_120@8键 @H_404_120@VK_9 @H_404_120@57 @H_404_120@9键 @H_404_120@VK_A @H_404_120@65 @H_404_120@A键 @H_404_120@VK_B @H_404_120@66 @H_404_120@B键 @H_404_120@VK_C @H_404_120@67 @H_404_120@C键 @H_404_120@VK_D @H_404_120@68 @H_404_120@D键 @H_404_120@VK_E @H_404_120@69 @H_404_120@E键 @H_404_120@VK_F @H_404_120@70 @H_404_120@F键 @H_404_120@VK_G @H_404_120@71 @H_404_120@G键 @H_404_120@VK_H @H_404_120@72 @H_404_120@H键 @H_404_120@VK_I @H_404_120@73 @H_404_120@I键 @H_404_120@VK_J @H_404_120@4A @H_404_120@74 @H_404_120@J键 @H_404_120@VK_K @H_404_120@4B @H_404_120@75 @H_404_120@K键 @H_404_120@VK_L @H_404_120@4C @H_404_120@76 @H_404_120@L键 @H_404_120@VK_M @H_404_120@4D @H_404_120@77 @H_404_120@M键 @H_404_120@VK_N @H_404_120@4E @H_404_120@78 @H_404_120@N键 @H_404_120@VK_O @H_404_120@4F @H_404_120@79 @H_404_120@O键 @H_404_120@VK_P @H_404_120@80 @H_404_120@P键 @H_404_120@VK_Q @H_404_120@81 @H_404_120@Q键 @H_404_120@VK_R @H_404_120@82 @H_404_120@R键 @H_404_120@VK_S @H_404_120@83 @H_404_120@S键 @H_404_120@VK_T @H_404_120@84 @H_404_120@T键 @H_404_120@VK_U @H_404_120@85 @H_404_120@U键 @H_404_120@VK_V @H_404_120@86 @H_404_120@V键 @H_404_120@VK_W @H_404_120@87 @H_404_120@W键 @H_404_120@VK_X @H_404_120@58 @H_404_120@88 @H_404_120@X键 @H_404_120@VK_Y @H_404_120@59 @H_404_120@89 @H_404_120@Y键 @H_404_120@VK_Z @H_404_120@5A @H_404_120@90 @H_404_120@Z键 @H_404_120@VK_NUMPAD0 @H_404_120@60 @H_404_120@96 @H_404_120@数字键0键 @H_404_120@VK_NUMPAD1 @H_404_120@61 @H_404_120@97 @H_404_120@数字键1键 @H_404_120@VK_NUMPAD2 @H_404_120@62 @H_404_120@98 @H_404_120@数字键2键 @H_404_120@VK_NUMPAD3 @H_404_120@99 @H_404_120@数字键3键 @H_404_120@VK_NUMPAD4 @H_404_120@64 @H_404_120@100 @H_404_120@数字键4键 @H_404_120@VK_NUMPAD5 @H_404_120@101 @H_404_120@数字键5键 @H_404_120@VK_NUMPAD6 @H_404_120@102 @H_404_120@数字键6键 @H_404_120@VK_NUMPAD7 @H_404_120@103 @H_404_120@数字键7键 @H_404_120@VK_NUMPAD8 @H_404_120@104 @H_404_120@数字键8键 @H_404_120@VK_NUMPAD9 @H_404_120@105 @H_404_120@数字键9键 @H_404_120@VK_MULTIPLY @H_404_120@6A @H_404_120@106 @H_404_120@数字键盘上的*键 @H_404_120@VK_ADD @H_404_120@6B @H_404_120@107 @H_404_120@数字键盘上的+键 @H_404_120@VK_SEPARATOR @H_404_120@6C @H_404_120@108 @H_404_120@Separator键 @H_404_120@VK_SUBTRACT @H_404_120@6D @H_404_120@109 @H_404_120@数字键盘上的-键 @H_404_120@VK_DECIMAL @H_404_120@6E @H_404_120@110 @H_404_120@数字键盘上的.键 @H_404_120@VK_DIVIDE @H_404_120@6F @H_404_120@111 @H_404_120@数字键盘上的/键 @H_404_120@VK_F1 @H_404_120@112 @H_404_120@F1键 @H_404_120@VK_F2 @H_404_120@113 @H_404_120@F2键 @H_404_120@VK_F3 @H_404_120@114 @H_404_120@F3键 @H_404_120@VK_F4 @H_404_120@115 @H_404_120@F4键 @H_404_120@VK_F5 @H_404_120@116 @H_404_120@F5键 @H_404_120@VK_F6 @H_404_120@117 @H_404_120@F6键 @H_404_120@VK_F7 @H_404_120@118 @H_404_120@F7键 @H_404_120@VK_F8 @H_404_120@119 @H_404_120@F8键 @H_404_120@VK_F9 @H_404_120@120 @H_404_120@F9键 @H_404_120@VK_F10 @H_404_120@121 @H_404_120@F10键 @H_404_120@VK_F11 @H_404_120@7A @H_404_120@122 @H_404_120@F11键 @H_404_120@VK_F12 @H_404_120@7B @H_404_120@123 @H_404_120@F12键 @H_404_120@VK_NUMLOCK @H_404_120@144 @H_404_120@Num Lock 键 @H_404_120@VK_SCROLL @H_404_120@91 @H_404_120@145 @H_404_120@Scroll Lock键 @H_404_120@ @H_404_120@上面没有提到的:(都在大键盘) @H_404_120@VK_LWIN @H_404_120@左win键 @H_404_120@VK_RWIN @H_404_120@92 @H_404_120@右win键 @H_404_120@VK_APPS @H_404_120@93 @H_404_120@右Ctrl左边键,点击相当于点击鼠标右键,会弹出快捷菜单 @H_404_120@186 @H_404_120@;(分号) @H_404_120@187 @H_404_120@=键 @H_404_120@188 @H_404_120@,键(逗号) @H_404_120@189 @H_404_120@-键(减号) @H_404_120@190 @H_404_120@.键(句号) @H_404_120@191 @H_404_120@/键 @H_404_120@192 @H_404_120@`键(Esc下面) @H_404_120@219 @H_404_120@[键 @H_404_120@220 @H_404_120@\键 @H_404_120@221 @H_404_120@]键 @H_404_120@222 @H_404_120@‘键(引号)
常数名称

delphi虚拟键码对应关键

VK_LBUTTON鼠标左键

VK_RBUTTON鼠标右键

VK_CANCEL控制+休息

VK_MBUTTON鼠标中键

VK_BACK Backspace键

VK_TAB Tab键

VK_CLEAR清除主要

VK_RETURN Enter键

VK_SHIFT Shift键

VK_CONTROL Ctrl键

VK_MENU Alt键

VK_PAUSE暂停关键

VK_CAPITAL Caps Lock键

VK_KANA可与输入法

VK_HANGUL可与输入法

VK_JUNJA可与输入法

VK_FINAL可与输入法

VK_HANJA可与输入法

VK_KANJI可与输入法

VK_CONVERT可与输入法

VK_NONCONVERT可与输入法

VK_ACCEPT可与输入法

VK_MODECHANGE可与输入法

VK_ESCAPE Esc键

VK_SPACE空间酒吧

VK_PRIOR页键

VK_NEXT下一页关键

VK_END END键

VK_HOME主页关键

VK_LEFT左箭头键

VK_UP向上键

VK_RIGHT右箭头键

VK_DOWN下箭头键

VK_SELECT选择关键

VK_PRINT打印键(键盘的具体)

VK_EXECUTE执行关键

VK_SNAPSHOT Print Screen键

VK_INSERT插入关键

VK_DELETE Delete键

VK_HELP帮助关键

VK_LWIN左Windows键(微软键盘

VK_RWIN右Windows键(微软键盘

VK_APPS应用关键(微软键盘

VK_NUMPAD0 0键(数字键盘

VK_NUMPAD1 1键(数字键盘

VK_NUMPAD2 2键(数字键盘

VK_NUMPAD3 3键(数字键盘

VK_NUMPAD4 4键(数字键盘

VK_NUMPAD5 5键(数字键盘

VK_NUMPAD6 6键(数字键盘

VK_NUMPAD7 7键(数字键盘

VK_NUMPAD8 8键(数字键盘

VK_NUMPAD9 9键(数字键盘

VK_MULTIPLY多键(数字键盘

VK_ADD添加键(数字键盘

VK_SEPARATOR分离键(数字键盘

VK_SUBTRACT减去键(数字键盘

VK_DECIMAL小数点键(数字键盘

VK_DIVIDE鸿沟键(数字键盘

VK_F1 F1键

VK_F2 F2键

VK_F3 F3的关键

VK_F4 F4键

VK_F5 F5键

VK_F6 F6键

VK_F7 F7键

VK_F8 F8键

VK_F9 F9键

VK_F10 F10键关键

VK_F11 F11键

VK_F12 F12键

VK_F13 F13键

VK_F14 F14键

VK_F15 F15键

VK_F16 F16键

VK_F17 F17键

VK_F18 F18键

VK_F19 F19键

VK_F20 F20键

VK_F21 F21键

VK_F22 F22键

VK_F23 F23键

VK_F24 F24键

VK_NUMLOCK数Lock键

VK_SCROLL滚动Lock键

VK_LSHIFT左Shift键(仅用于GetAsyncKeyState和GetKeyState )

VK_RSHIFT右Shift键(仅用于GetAsyncKeyState和GetKeyState )

VK_LCONTROL左Ctrl键(仅用于GetAsyncKeyState和GetKeyState )

VK_RCONTROL右Ctrl键(仅用于GetAsyncKeyState和GetKeyState )

VK_LMENU左Alt键(仅用于GetAsyncKeyState和GetKeyState )

VK_RMENU右Alt键(仅用于GetAsyncKeyState和GetKeyState )

VK_PROCESSKEY工艺关键

VK_ATTN经办关键

VK_CRSEL CrSel关键

VK_EXSEL ExSel关键

VK_EREOF擦除EOF分析关键

VK_PLAY发挥关键

VK_ZOOM变焦关键

VK_NONAME保留以供将来使用

VK_PA1 PA1关键

VK_OEM_CLEAR清除主要标签数: 1 “ F14键

VK_OEM_CLEAR清除主要

猜你在找的Delphi相关文章