delphi 消息鍵盤按鍵代碼


 tab鍵

方法一:消息

          postmessage(Application.ActiveFormHandle, wm_keydown, vk_tab, 0);
          postmessage(Application.ActiveFormHandle, wm_keyup, vk_tab, 0);

方法二: 

  keybd_event(VK_TAB, 0, 0, 0);
  keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0);

例子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);

例子3:模擬按下'CTRL+C'鍵

   keybd_event(17,0,0,0);
   keybd_event(67,0,0,0);
   keybd_event(67,0,KEYEVENTF_KEYUP,0);
   keybd_event(17,0,KEYEVENTF_KEYUP,0);

 

示鼠標的雙擊

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);

 

鍵盤碼參照

http://blog.sina.com.cn/s/blog_53013a8c01012nwa.html

 

 在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,0,0);

keybd_event($49,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的示例代碼:

 

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;鼠標單擊 完也要松開, 不然可能影響程序的功能。  

 

 

 

模擬鍵盤輸入首先要用到一個API函數:keybd_event。
  我們是菜鳥,所以不必具體去理解它的詳細用法,只要按以下方法使用即可了!呵呵!
  模擬按鍵有兩個基本動作,即按下鍵和放開按鍵,所以我們每模擬一次按鍵就要調用兩次該API函數,其方法是:
  
  例子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

 

   好了,希望本文能讓你對模擬鍵盤和鼠標按鍵有個初步的了解,如果想更深入的了解其中的奧妙,可以查閱詳實的msdn在線幫助,並多多動手實踐。

附:更詳細的鍵值表:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM