w32模塊模擬鼠標鍵盤操作


win32api.keybd_event


該函數原型:keybd_event(bVk, bScan, dwFlags, dwExtraInfo)


第一個參數:虛擬鍵碼(鍵盤鍵碼對照表見附錄);


第二個參數:硬件掃描碼,一般設置為0即可;


第三個參數:函數操作的一個標志位,如果值為KEYEVENTF_EXTENDEDKEY則該鍵被按下,也可設置為0即可,如果值為KEYEVENTF_KEYUP則該按鍵被釋放;


第四個參數:定義與擊鍵相關的附加的32位值,一般設置為0即可。

例子

 

  1. import win32api
  2.  
    import win32con
  3.  
    win32api.keybd_event( 13,0,0,0)     # enter
  4.  
    win32api.keybd_event( 13,0,win32con.KEYEVENTF_KEYUP,0)  #釋放按鍵

# 按下ctrl+s
win32api.keybd_event(0x11, 0, 0, 0)
win32api.keybd_event(0x53, 0, 0, 0)
win32api.keybd_event(0x53, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)
# 按下回車
win32api.keybd_event(0x0D, 0, 0, 0)
win32api.keybd_event(0x0D, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)
# 按下ctrl+W
win32api.keybd_event(0x11, 0, 0, 0)
win32api.keybd_event(0x57, 0, 0, 0)
win32api.keybd_event(0x57, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)


# 按下ctrl+a
win32api.keybd_event(0x11, 0, 0, 0)
win32api.keybd_event(0x41, 0, 0, 0)
win32api.keybd_event(0x41, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)
# 按下ctrl+v
win32api.keybd_event(0x11, 0, 0, 0)
win32api.keybd_event(0x56, 0, 0, 0)
win32api.keybd_event(0x56, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)

實例2 模擬鼠標按鍵,並且截圖

import os

import time

import win32gui

import win32api

import win32con

from PIL import ImageGrab

#os.startfile("D:\\artcut6\\Prog\\Artcut6.exe")

#time.sleep(1)

wdname1=u"文泰刻繪2009[] - [無標題-1]"

w1hd=win32gui.FindWindow(0,wdname1)

print w1hd

w2hd=win32gui.FindWindowEx(w1hd,None,None,None)

print w2hd

def aotohelper_wt(i):

#獲取窗口焦點

win32gui.SetForegroundWindow(w2hd)

#快捷鍵Alt+F

win32api.keybd_event(18,0,0,0) # Alt

win32api.keybd_event(70,0,0,0) # F

win32api.keybd_event(70,0,win32con.KEYEVENTF_KEYUP,0) #釋放按鍵

win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0)

#快捷鍵I

win32api.keybd_event(73,0,0,0) # I

win32api.keybd_event(73,0,win32con.KEYEVENTF_KEYUP,0)

time.sleep(0.2)

wdname3=u"打開"

w3hd=win32gui.FindWindow(None,wdname3) #”打開“ 窗口句柄

#print w3hd

#win32gui.MoveWindow(w3hd, 50, 50, 300, 200, True)

if i<=9:

msg="YC-00"+str(i)

elif 10<=i<=99:

msg="YC-0"+str(i)

else:

msg="YC-"+str(i)

edithd=win32gui.FindWindowEx(w3hd,None,"Edit",None)

win32api.SendMessage(edithd,win32con.WM_SETTEXT,None,msg)

time.sleep(0.1)

#btnhd=win32gui.FindWindowEx(w3hd,None,"BUTTON",None)

#print btnhd

#模擬快捷鍵Alt+O

win32api.keybd_event(18,0,0,0) # Alt

win32api.keybd_event(79,0,0,0) # O

win32api.keybd_event(79,0,win32con.KEYEVENTF_KEYUP,0) #釋放按鍵

win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0)

time.sleep(0.1)

#模擬鼠標操作

win32api.SetCursorPos([30,150]) #為鼠標焦點設定一個位置

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0,0,0)

win32api.SetCursorPos([500,500])

win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0,0,0)

time.sleep(0.1)

#模擬快捷鍵F7(極限觀察)

win32api.keybd_event(118,0,0,0) # F7

win32api.keybd_event(118,0,win32con.KEYEVENTF_KEYUP,0) #釋放按鍵

time.sleep(0.2)

#利用PIL截屏

path="C:\\Users\\LY\\Desktop\\pic\\"

filename="YC-"+str(i)+".jpg"

im=ImageGrab.grab()

im.save(path+filename)

#模擬快捷鍵F8(回到原頁面大小)

win32api.keybd_event(119,0,0,0) # F8

win32api.keybd_event(119,0,win32con.KEYEVENTF_KEYUP,0) #釋放按鍵

#模擬鍵盤事件delete

win32api.keybd_event(46,0,0,0) # Delete

win32api.keybd_event(46,0,win32con.KEYEVENTF_KEYUP,0) #釋放按鍵

time.sleep(1)

for i in range(2,85):

aotohelper_wt(i)

print i

print "work done!"

 

 

 

 


實例3



# coding=utf-8
from selenium import webdriver
import win32api
import win32con
import win32clipboard
from ctypes import *
import time# 瀏覽器打開百度網頁
browser = webdriver.Chrome()
browser.maximize_window()
browser.get("https://www.baidu.com/")
time.sleep(2)# 獲取頁面title作為文件名
title = browser.title
# 設置路徑為:當前項目的絕對路徑+文件名
path = (os.path.dirname(os.path.realpath(__file__)) + "\\" + title + ".html")
# 將路徑復制到剪切板
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(path)
win32clipboard.CloseClipboard()
# 按下ctrl+s
win32api.keybd_event(0x11, 0, 0, 0)
win32api.keybd_event(0x53, 0, 0, 0)
win32api.keybd_event(0x53, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)
# 鼠標定位輸入框並點擊
windll.user32.SetCursorPos(700, 510)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
time.sleep(1)
# 按下ctrl+a
win32api.keybd_event(0x11, 0, 0, 0)
win32api.keybd_event(0x41, 0, 0, 0)
win32api.keybd_event(0x41, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)
# 按下ctrl+v
win32api.keybd_event(0x11, 0, 0, 0)
win32api.keybd_event(0x56, 0, 0, 0)
win32api.keybd_event(0x56, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)
# 按下回車
win32api.keybd_event(0x0D, 0, 0, 0)
win32api.keybd_event(0x0D, 0, win32con.KEYEVENTF_KEYUP, 0)
browser.close()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM