用Delphi模擬鍵盤輸入

2021-05-25 08:57:50 字數 3523 閱讀 2504

在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

用Python模擬鍵盤輸入

pywin安裝模組 import win32api import win32con win32api.keybd event 17,0,0,0 ctrl鍵位碼是17 win32api.keybd event 86,0,0,0 v鍵位碼是86 win32api.keybd event 86,0,win...

Python模擬鍵盤輸入

2.程式實現 import win32api import win32con win32api.keybd event 17,0,0,0 ctrl鍵位碼是17 win32api.keybd event 86,0,0,0 v鍵位碼是86 win32api.keybd event 86,0,win32c...

rpa模擬鍵盤輸入

1 基本鍵 常用鍵盤字串使用直接輸入字串的方式執行 傳送按鍵 cfan 鍵盤輸入 cfan 2 特殊功能鍵 對於shift ctrl alt三個控制鍵組合的按鍵,使用特殊字元來表示 shift 使用 ctrl 使用 alt 使用 來代替 例1 同時使用ctrl e 鍵盤輸入 e 例2 按住ctrl鍵...