用Python模擬鍵盤輸入

2022-04-28 17:33:11 字數 4238 閱讀 2029

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,win32con.keyeventf_keyup,0) #釋放按鍵

win32api.keybd_event(17,0,win32con.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

這個函式在user32.dll這個庫檔案裡面。我們可以在c:\windows\system32(xp系統)這個目錄下找到這個檔案,他是系統自帶的。 我們以c#直接呼叫這個檔案中的api為例子來說下怎麼進行滑鼠操作,首先在我們c#中宣告引用,如果是乙個基於from的程式,這個宣告的位置寫在你的from class就可以了 

[system.runtime.interopservices.dllimport("user32")] 

private static extern int mouse_event(int dwflags, int dx, int dy, int cbuttons, int dwextrainfo); 

引數 意義 

dwflags long,下表中標誌之一或它們的組合 

dx,dy long,根據mouseeventf_absolute標誌,指定x,y方向的絕對位置或相對位置 

cbuttons long,沒有使用 

dwextrainfo long,沒有使用 

dwflags常數 意義 

const int mouseeventf_move = 0x0001;      移動滑鼠 

const int mouseeventf_leftdown = 0x0002; 模擬滑鼠左鍵按下 

const int mouseeventf_leftup = 0x0004; 模擬滑鼠左鍵抬起 

const int mouseeventf_rightdown = 0x0008; 模擬滑鼠右鍵按下 

const int mouseeventf_rightup = 0x0010; 模擬滑鼠右鍵抬起 

const int mouseeventf_middledown = 0x0020; 模擬滑鼠中鍵按下 

const int mouseeventf_middleup = 0x0040; 模擬滑鼠中鍵抬起 

const int mouseeventf_absolute = 0x8000; 標示是否採用絕對座標 

程式中我們直接呼叫mouse_event函式就可以了 

mouse_event(mouseeventf_absolute | mouseeventf_move, 500, 500, 0, 0); 

1、這裡是滑鼠左鍵按下和鬆開兩個事件的組合即一次單擊: 

mouse_event (mouseeventf_leftdown | mouseeventf_leftup, 0, 0, 0, 0 ) 

2、模擬滑鼠右鍵單擊事件: 

mouse_event (mouseeventf_rightdown | mouseeventf_rightup, 0, 0, 0, 0 ) 

3、兩次連續的滑鼠左鍵單擊事件 構成一次滑鼠雙擊事件: 

mouse_event (mouseeventf_leftdown | mouseeventf_leftup, 0, 0, 0, 0 ) 

mouse_event (mouseeventf_leftdown | mouseeventf_leftup, 0, 0, 0, 0 ) 

4、使用絕對座標 

mouseeventf_absolute | mouseeventf_move, 500, 500, 0, 0 

需要說明的是,如果沒有使用mouseeventf_absolute,函式預設的是相對於滑鼠當前位置的點,如果dx,和dy,用0,0表示,這函式認為是當前滑鼠所在的點。5、直接設定絕對座標並單擊 

mouse_event(mouseeventf_leftdown, x * 65536 / 1024, y * 65536 / 768, 0, 0); 

mouse_event(mouseeventf_leftup, x * 65536 / 1024, y * 65536 / 768, 0, 0); 

其中x,y分別是你要點選的點的橫座標和縱座標 

而鍵盤模擬用 keybd_event() 

keybd_event能觸發乙個按鍵事 件,也就是說回產生乙個wm_keydown或wm_keyup訊息。當然也可以用產生這兩個訊息來模擬按鍵,但是沒有直接用這個函式方便。 keybd_event共有四個引數,第乙個為按鍵的虛擬鍵值,如回車鍵為vk_return, tab鍵為vk_tab。第二個引數為掃瞄碼,一般不用 設定,用0代替就行。第三個引數為選項標誌,如果為keydown則置0即可,如果為keyup則設成「keyeventf_keyup」,第四個引數一 般也是置0即可。

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...

python 模擬鍵盤輸入

備忘錄 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,win32con....

用Delphi模擬鍵盤輸入

在windows大行其道的今天,windows介面程式受到廣大使用者的歡迎。對這些程式的操作不外乎兩種,鍵盤輸入控制和滑鼠輸入控制。有時,對於繁雜的,或重複性的操作,我們能否通過編制程式來代替手工輸入,而用程式來模擬鍵盤及滑鼠的輸入呢?答案是肯定的。這主要是通過兩個api函式來實現的。下面以delp...