python模擬鼠標點擊和鍵盤輸入的操作

## 實際運用,視頻講解
視頻傳送門:點我
## 環(huán)境搭建
python版本:python-2.7.16
安裝 pyUserInput(ps:python3.7我試了后裝不上)
```powershell
pip install PyUserInput
```
速度很慢,需要耐心等待

再裝個 `pip install pymouse`

有說法是需要安裝PyHook,不過2.7沒裝也能用(自測)
ps:安裝pywin32,若 `pip install pywin32`不行
可去 github項目,[pywin32](https://github.com/mhammond/pywin32)


### 鼠標操作:
```python
m.click(x,y,button,n) 鼠標點擊
x,y 是坐標位置
button 1表示左鍵,2表示點擊右鍵
n 點擊次數(shù),默認是1次,2表示雙擊
m.move(x,y) –鼠標移動到坐標(x,y)
x_dim, y_dim = m.screen_size() –獲得屏幕尺寸
```
### 鍵盤操作:
```python
k.type_string('Hello, World!') –模擬鍵盤輸入字符串
k.press_key('H') –模擬鍵盤按H鍵
k.release_key('H') –模擬鍵盤松開H鍵
k.tap_key('H') –模擬點擊H鍵
k.tap_key('H',n=2,interval=5) –模擬點擊H鍵,2次,每次間隔5秒
k.tap_key(k.function_keys[5]) –點擊功能鍵F5
k.tap_key(k.numpad_keys[5],3) –點擊小鍵盤5,3次
```
### 聯(lián)合按鍵模擬
例如同時按alt+tab鍵盤
```python
k.press_key(k.alt_key) –按住alt鍵
k.tap_key(k.tab_key) –點擊tab鍵
k.release_key(k.alt_key) –松開alt鍵
```
### 1.PyMouse的基本方法
```python
1)drag(self, x, y)
把鼠標移動到x,y坐標處,是一個拖拽動作,不只是移動
2) move(self, x, y)
把鼠標移動到x,y
3)position(self)
得到鼠標的當前位置,并返回坐標x,y
4)press(self, x, y, button=1)
鼠標按下不松開x,y的坐標點,button表示左右鍵
5)release(self, x, y, button=1)
松開指定位置的鼠標
6)scroll(self, vertical=None, horizontal=None, depth=None)
生成最多三個維度的鼠標滾動事件:垂直、水平和深度(僅限于Mac)。這些參數(shù)的值可以是正數(shù)或負數(shù)(浮點數(shù)或整數(shù))。請參閱以下內容:
Vertical: + Up, - Down
Horizontal: + Right, - Left
Depth: + Rise (out of display), - Dive (towards display)
滾動鼠標的滾輪,在三個方向上移動
7)click(self, x, y, button=1, n=1)
在給定的x,y上單擊鼠標按鈕n次。button定義為1=左,2=右,3=中間。
```
### 2.PyKeyboard的基本方法
```python
1)press_key(self, character='')
按給定的字符鍵。
2)release_key(self, character='')
釋放給定的字符鍵。
3) press_keys(self, characters=[])
按給定的字符鍵。
4)tap_key(self, character='', n=1, interval=0)
按下并釋放給定的字符鍵n次。
#點擊功能鍵F5
pyk.tap_key(pyk.function_keys[5])
#點擊小鍵盤5,6次
pyk.tap_key(pyk.numpad_keys[5],6)
#點擊回車鍵
pyk.tap_key(k.enter_key)
#聯(lián)合按鍵模擬
#同時按alt+tab鍵盤
pyk.press_key(pyk.alt_key)#按住alt鍵
pyk.tap_key(pyk.tab_key)#點擊tab鍵
pyk.release_key(pyk.alt_key)#松開alt鍵
5)type_string(self, char_string, interval=0)
一種用于鍵入較長字符串的方便方法。生成盡可能少的移位事件。
```
## 簡單的程序進行測試
**需要管理員權限啟動!?。?span id="s0sssss00s" class="token cl cl-strong cl-close">**
### 1、獲取鼠標當前位置,并打印坐標x,y
```python
import time
from pymouse import PyMouse
from pykeyboard import PyKeyboard
m = PyMouse()
k = PyKeyboard()
time.sleep(5)
while True:
x,y = m.position()
print "x:",x,",y:",y
time.sleep(3)
```
### 2、前后走動,一定時間后按下某鍵
```python
#coding=utf-8
#適合窗口化游戲1280*800
import time
from pymouse import PyMouse
from pykeyboard import PyKeyboard
m = PyMouse()
k = PyKeyboard()
#睡眠5s,給你準備時間
time.sleep(5)
#鎖定視角
#k.tap_key("y")
#time.sleep(0.5)
#判斷是否放R
flag = 0
#循環(huán)
while True:
#右擊這個坐標
m.click(1138,371,2,1)
time.sleep(4)
#右擊這個坐標
m.click(820,631,2,1)
time.sleep(4)
if flag > 13:
k.tap_key('w')
time.sleep(5)
k.tap_key('d')
time.sleep(0.5)
k.tap_key('r')
time.sleep(3)
k.tap_key('w')
time.sleep(2.5)
flag = 0
flag = flag + 1
```
參考文章:[PyUserInput操作說明](https://blog.csdn.net/jjjndk1314/article/details/80621419)
[Pyuserinput 基礎操作(鼠標鍵盤模擬)](https://www.jianshu.com/p/7e0158b99497)