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()

 

posted @   菩提浪子  阅读(979)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示