1. 程式人生 > >[python]windows下模擬滑鼠鍵盤輸入

[python]windows下模擬滑鼠鍵盤輸入

先介紹幾個用到的函式:

1.SetCursorPos(xy)函式:該函式把游標移到螢幕的指定位置,但是並沒有點選。

2.mouse_event()函式:函式綜合滑鼠擊鍵和滑鼠動作

mouse_event(win32con.flag, 0, 0, 0, 0):

Flag

MOUSEEVENTF_MOVE:表明發生移動。

MOUSEEVENTF_LEFTDOWN:表明接按下滑鼠左鍵。

MOUSEEVENTF_LEFTUP:表明鬆開滑鼠左鍵。

MOUSEEVENTF_RIGHTDOWN:表明按下滑鼠右鍵。

MOUSEEVENTF_RIGHTUP:表明鬆開滑鼠右鍵。

MOUSEEVENTF_MIDDLEDOWN:

表明按下滑鼠中鍵。

MOUSEEVENTF_MIDDLEUP:表明鬆開滑鼠中鍵。

3. keybd_event:一共分為兩種按下和鬆開

keybd_event('a',0,0,0); //按下a
keybd_event('a',0,KEYEVENTF_KEYUP,0); //鬆開a

4. 可以下載AutoScriptWriter.exe用來獲取位置資訊

下面是我自己寫了三個函式分別為:輸出鍵盤上的所有鍵值(針對小寫),傳到函式的為小寫字母(下檔建),自動輸出大寫字母(上檔鍵),第三個為自動識別大小寫輸出:我也在用的函式後邊加了註釋

# _*_ coding:UTF-8 _*_
import win32api
import win32con
import win32gui
from ctypes import *
import time
VK_CODE = {
    'backspace':0x08,
    'tab':0x09,
    'clear':0x0C,
    'enter':0x0D,
    'shift':0x10,
    'ctrl':0x11,
    'alt':0x12,
    'pause':0x13,
    'caps_lock':0x14,
    'esc':0x1B,
    'spacebar':0x20,
    'page_up':0x21,
    'page_down':0x22,
    'end':0x23,
    'home':0x24,
    'left_arrow':0x25,
    'up_arrow':0x26,
    'right_arrow':0x27,
    'down_arrow':0x28,
    'select':0x29,
    'print':0x2A,
    'execute':0x2B,
    'print_screen':0x2C,
    'ins':0x2D,
    'del':0x2E,
    'help':0x2F,
    '0':0x30,
    '1':0x31,
    '2':0x32,
    '3':0x33,
    '4':0x34,
    '5':0x35,
    '6':0x36,
    '7':0x37,
    '8':0x38,
    '9':0x39,
    'a':0x41,
    'b':0x42,
    'c':0x43,
    'd':0x44,
    'e':0x45,
    'f':0x46,
    'g':0x47,
    'h':0x48,
    'i':0x49,
    'j':0x4A,
    'k':0x4B,
    'l':0x4C,
    'm':0x4D,
    'n':0x4E,
    'o':0x4F,
    'p':0x50,
    'q':0x51,
    'r':0x52,
    's':0x53,
    't':0x54,
    'u':0x55,
    'v':0x56,
    'w':0x57,
    'x':0x58,
    'y':0x59,
    'z':0x5A,
    'numpad_0':0x60,
    'numpad_1':0x61,
    'numpad_2':0x62,
    'numpad_3':0x63,
    'numpad_4':0x64,
    'numpad_5':0x65,
    'numpad_6':0x66,
    'numpad_7':0x67,
    'numpad_8':0x68,
    'numpad_9':0x69,
    'multiply_key':0x6A,
    'add_key':0x6B,
    'separator_key':0x6C,
    'subtract_key':0x6D,
    'decimal_key':0x6E,
    'divide_key':0x6F,
    'F1':0x70,
    'F2':0x71,
    'F3':0x72,
    'F4':0x73,
    'F5':0x74,
    'F6':0x75,
    'F7':0x76,
    'F8':0x77,
    'F9':0x78,
    'F10':0x79,
    'F11':0x7A,
    'F12':0x7B,
    'F13':0x7C,
    'F14':0x7D,
    'F15':0x7E,
    'F16':0x7F,
    'F17':0x80,
    'F18':0x81,
    'F19':0x82,
    'F20':0x83,
    'F21':0x84,
    'F22':0x85,
    'F23':0x86,
    'F24':0x87,
    'num_lock':0x90,
    'scroll_lock':0x91,
    'left_shift':0xA0,
    'right_shift ':0xA1,
    'left_control':0xA2,
    'right_control':0xA3,
    'left_menu':0xA4,
    'right_menu':0xA5,
    'browser_back':0xA6,
    'browser_forward':0xA7,
    'browser_refresh':0xA8,
    'browser_stop':0xA9,
    'browser_search':0xAA,
    'browser_favorites':0xAB,
    'browser_start_and_home':0xAC,
    'volume_mute':0xAD,
    'volume_Down':0xAE,
    'volume_up':0xAF,
    'next_track':0xB0,
    'previous_track':0xB1,
    'stop_media':0xB2,
    'play/pause_media':0xB3,
    'start_mail':0xB4,
    'select_media':0xB5,
    'start_application_1':0xB6,
    'start_application_2':0xB7,
    'attn_key':0xF6,
    'crsel_key':0xF7,
    'exsel_key':0xF8,
    'play_key':0xFA,
    'zoom_key':0xFB,
    'clear_key':0xFE,
    '+':0xBB,
    ',':0xBC,
    '-':0xBD,
    '.':0xBE,
    '/':0xBF,
    '`':0xC0,
    ';':0xBA,
    '[':0xDB,
    '\\':0xDC,
    ']':0xDD,
    "'":0xDE}
VK_CODE1 = {
    'A':'a',
    'B':'b',
    'C':'c',
    'D':'d',
    'E':'e',
    'F':'f',
    'G':'g',
    'H':'h',
    'I':'i',
    'J':'j',
    'K':'k',
    'L':'l',
    'M':'m',
    'N':'n',
    'O':'o',
    'P':'p',
    'Q':'q',
    'R':'r',
    'S':'s',
    'T':'t',
    'U':'u',
    'V':'v',
    'W':'w',
    'X':'x',
    'Y':'y',
    'Z':'z',
    ')':'0',
    '!':'1',
    '@':'2',
    '#':'3',
    '$':'4',
    '%':'5',
    '^':'6',
    '&':'7',
    '*':'8',
    '(':'9',
    '=':'+',
    '<':',',
    '_':'-',
    '>':'.',
    '?':'/',
    '~':'`',
    ':':';',
    '{':'[',
    '|':'\\',
    '}':']',
    '"':"'"}
def mouse_click(x=None,y=None):#模擬滑鼠單擊
    if not x is None and not y is None:
        mouse_move(x,y)
        time.sleep(0.05)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
def mouse_dclick(x=None,y=None):#模擬滑鼠雙擊
    if not x is None and not y is None:
        mouse_move(x,y)
        time.sleep(0.05)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)#按下滑鼠左鍵
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)#鬆開滑鼠左鍵
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
def mouse_move(x,y):
    windll.user32.SetCursorPos(x, y)#將滑鼠移動到對應位置但是不點選
def key_input(str=''):#輸出小寫的
    for c in str:
        win32api.keybd_event(VK_CODE[c],0,0,0)#按鍵
        win32api.keybd_event(VK_CODE[c],0,win32con.KEYEVENTF_KEYUP,0)#釋放按鍵
        time.sleep(0.05)#延時1秒
def key_dinput(str=''):#傳進小寫的輸出大寫的
    for c in str:
        win32api.keybd_event(VK_CODE['shift'],0,0,0)#按鍵
        win32api.keybd_event(VK_CODE[c],0,0,0)#按鍵
        win32api.keybd_event(VK_CODE['shift'],0,win32con.KEYEVENTF_KEYUP,0)#釋放按鍵
        win32api.keybd_event(VK_CODE[c],0,win32con.KEYEVENTF_KEYUP,0)#釋放按鍵
        time.sleep(0.05)#延時1秒
def key_autinput(str=''):#自動識別上檔鍵和下檔建並輸出
    for c in str:
        if c in VK_CODE1:
            win32api.keybd_event(VK_CODE['shift'],0,0,0)#按鍵
            win32api.keybd_event(VK_CODE[VK_CODE1[c]],0,0,0)#按鍵
            win32api.keybd_event(VK_CODE['shift'],0,win32con.KEYEVENTF_KEYUP,0)#釋放按鍵
            win32api.keybd_event(VK_CODE[VK_CODE1[c]],0,win32con.KEYEVENTF_KEYUP,0)#釋放按鍵
            time.sleep(0.05)#延時1秒
        else:
            win32api.keybd_event(VK_CODE[c],0,0,0)#按鍵
            win32api.keybd_event(VK_CODE[c],0,win32con.KEYEVENTF_KEYUP,0)#釋放按鍵
            time.sleep(0.05)#延時1秒
		
if __name__ == "__main__":
    mouse_click(1024,470)
    str = '
[email protected]
#$a%^d&*(s)_s+{}f|":h?><'     key_autinput(str)
if __name__ == "__main__":     mouse_click(1024,470)     str = '[email protected]#$a%^d&*(s)_s+{}f|":h?><'     key_autinput(str)

相關推薦

[python]windows模擬滑鼠鍵盤輸入

先介紹幾個用到的函式: 1.SetCursorPos(x,y)函式:該函式把游標移到螢幕的指定位置,但是並沒有點選。 2.mouse_event()函式:函式綜合滑鼠擊鍵和滑鼠動作 mouse_event(win32con.flag, 0, 0, 0, 0): Fla

python 模擬滑鼠鍵盤輸入PyUserInput

PyUserInput is a group project so we've moved the project over to a group organization:https://github.com/PyUserInput/PyUserInput . Tha

Java模擬滑鼠鍵盤輸入事件 --- Robot 類

Robot,機器人。此類用於為測試自動化、自執行演示程式和其他需要控制滑鼠和鍵盤的應用程式生成本機系統輸入事件。Robot 的主要目的是便於 Java 平臺實現自動測試。 Robot 可以模擬滑鼠和鍵盤的輸入,相當於 Java 版的按鍵精靈。 Rob

python 捕捉和模擬滑鼠鍵盤操作

最近老師佈置了一個作業,要求我們建立一個6位數字的gmail賬號,然而我臉太黑,試了好多次都不成功,於是決定用python來寫一個指令碼遍歷輸入所有6位數。這就要求掌握使用python捕捉和模擬鍵盤操作了,於是我查閱了網上諸多資料,終於實現了這個功能,特此

pythonwindows監聽鍵盤按鍵

else name setw 程序 是我 user api put use python 在windows下監聽鍵盤按鍵 使用到的庫 ctypes(通過ctypes來調用Win32API, 主要就是調用鉤子函數) 使用的Win32API SetWindowsHookE

python windows pip easy_install 使用錯誤的問題

log 路徑和 csdn 安裝包 launcher 裝包 python安裝 detail tails 最近電腦重裝了系統,又重新安裝python 。在官網下載了安裝包後電腦成功安裝了,但使用pip命令時出現以下錯誤 Fatal error in l

兄弟連學Python-windowsmongodb安裝與使用整理

not dbn 創建文件夾 upd 查詢 無法連接到數據庫 取模 save 正則 一、首先安裝mongodb 1.下載地址:http://www.mongodb.org/downloads 2.解壓縮到自己想要安裝的目錄,比如d:\mongodb 3.創建文件夾 d:\mo

Python--Windows安裝虛擬環境

文件夾 私有 計算 activate 但是 python3 包管理 col 進入 為什麽需要虛擬環境 在python開發中,我們可能會遇到一種情況:就是當前的項目依賴的是某一個版本,但是另一個項目依賴的是另一個版本,這樣就會造成依賴沖突。在這種情況之下,我們就需要一個工具

MongoDB(一):Python-windowsmongodb安裝與使用整理

序言: 本部落格通過六大方面介紹如下內容: 前言介紹:介紹了包含MongoDB、NoSQL、關係型資料庫和非關係型資料的優缺點等內容。 Windows 平臺安裝MongoDB:介紹瞭如何在Windows下安裝MongoDB,學習python時可能會遇到安裝MongoDB,對於習慣

Python Windowssubprocess立即關閉管道

Windows下帶UI的Python程式,如果其中使用了subprocess.Popen,那麼我們可以設定shell=True來不顯示command視窗,但是這樣的話,使用terminate()就無法立即終止管道;如果想terminate()能達到立即終止的效果,又必須把shell=False,看起

selenium webdriver 模擬滑鼠鍵盤的操作

selenium通過命令進行驅動,其中一種風格就是action(動作)。actions命令一般用於操作應用程式的狀態,通過“點選”和“選擇”的方式進行工作。webdriver繼承了selenium中的actions類,這個actions類中,主要是模擬使用者的滑鼠mouse

基於STM32處理器的USB HID模擬滑鼠鍵盤(2)

由於在報告描述符中使用了兩個Report ID,分別是0x01和0x02,前者是鍵盤的報告描述符的報告ID,後者是滑鼠的報告ID,HID的鍵盤和滑鼠傳送的資料格式參考文件: 根據文件編寫鍵盤和滑鼠的

python windows實現備份

程式碼如下: #-*- coding: utf-8 -*- import os import time #step1:需要備份的檔案 source='F:\\backuptest\\source\\aa.txt' #step2:儲存備份檔案的位置 target_di

pyautogui自動化---模擬滑鼠鍵盤常用操作

pyautogui能很好的控制鍵盤和滑鼠,可以用在我們的各種pc端產品的自動化測試上。但其實配合pywinauto一起使用是非常完美的,這個後面續寫。我們先來看看一些常用的鍵盤和滑鼠的操作命令。我就直接把截圖了,這樣看起來更清晰一些。後面文字再介紹pyautogui的鍵盤表

keybd_event和mouse_event完全徹底細緻的模擬滑鼠鍵盤所有動作

keybd_event  函式功能:該函式合成一次擊鍵事件。系統可使用這種合成的擊鍵事件來產生WM_KEYUP或WM_KEYDOWN訊息,鍵盤驅動程式的中斷處理程式呼叫keybd_event函式。在Windows NT中該函式己被使用Sendlhput來替代它。  函式原型;

[Python]Windows安裝Graphviz和pygraphviz的方法

1.安裝Graphviz 下載之後,進行安裝。找到安裝路徑,如:C:\Program Files (x86)\Graphviz2.38 將其中bin資料夾對應的路徑新增到path環境變數中,也就是將C:\Program Files (x86)\Graphviz2.38\

Windows 命令列 無法輸入中文

1. 首先想到的是輸入的問題, 添加了預設的"智慧ABC"輸入法後,還是無法輸入。看來是輸入法控制程式的問題!windows 的輸入法控制程式是 conime.exe結果一搜索, 發現在系統中沒有 發現 conime.exe ,當然無法切換輸入法了。從另一臺電腦上拷貝 con

java實現模擬滑鼠鍵盤操作

 用java寫指令碼,首先需要用到Robot類 ,也就是機器人類。先new一個Robot物件然後呼叫裡面的方法 ,keyPress方法是按下鍵盤上的某個鍵,比如下面程式碼裡面寫的keyPress(KeyEvevt.VK_Y); 括號裡面VK後面的字母就是要按下的鍵,然後按下了

Python Windows檔案讀寫與二進位制讀寫的區別

從我遇到的實際場景來看,區別主要在於對換行符的處理上。 概念: ”\n” – 換行符(LF) – 指向新的一行 “\r” – 回車符(CR) – 指到一行的開頭 不同系統下的換行符有區別: Window 下為 “\r\n”; Unix 下為 “\n”;

(親測解決)WindowsVim中無法輸入中文

文章目錄 一、Vim下載地址 1.2 百度網盤:Vim8下載 密碼:ziki 二、Windows下Vim中無法輸入中文 2.1 問題描述 今天下載Vim8在win10上安裝之後發現居然無法輸入中文,琢磨了好久,