1. 程式人生 > >用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,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線上幫助,並多多動手實踐。