windows下python模拟鼠标点击和键盘输示例


Posted in Python onFebruary 28, 2014

需要先装pywin32,windows下调用winapi的接口

#
# _*_ coding:UTF-8 _*_
__author__ = 'shanl'
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,
    '`':0xC0}
class POINT(Structure):
    _fields_ = [("x", c_ulong),("y", c_ulong)]
def get_mouse_point():
    po = POINT()
    windll.user32.GetCursorPos(byref(po))
    return int(po.x), int(po.y)
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)
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_LEFTDOWN, 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.01)
def t0():
    pass
def t2():
    mouse_click(800,200)
    for c in 'hello':
        win32api.keybd_event(65,0,0,0) #a键位码是86
        win32api.keybd_event(65,0,win32con.KEYEVENTF_KEYUP,0)
    #print get_mouse_point()
def t1():
    #mouse_move(1024,470)aa
    #time.sleep(0.05)
    #mouse_dclick()HELLO
    mouse_dclick(1024,470)
def t3():
    mouse_click(1024,470)
    str = 'hello'
    for c in str:
        win32api.keybd_event(VK_CODE[c],0,0,0) #a键位码是86
        win32api.keybd_event(VK_CODE[c],0,win32con.KEYEVENTF_KEYUP,0)
        time.sleep(0.01)
def t4():
    mouse_click(1024,470)
    str = 'hello'
    key_input(str)
if __name__ == "__main__":
    t4()
    #t3()
    #t2()
    #t1()
    t0()
Python 相关文章推荐
Python3连接MySQL(pymysql)模拟转账实现代码
May 24 Python
使用Turtle画正螺旋线的方法
Sep 22 Python
python机器学习实战之K均值聚类
Dec 20 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 Python
解决Pycharm中import时无法识别自己写的程序方法
May 18 Python
python导包的几种方法(自定义包的生成以及导入详解)
Jul 15 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
什么是python的必选参数
Jun 21 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
Jul 02 Python
Python sqlalchemy时间戳及密码管理实现代码详解
Aug 01 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 Python
python基于机器学习预测股票交易信号
May 25 Python
python抓取网页中的图片示例
Feb 28 #Python
使用python分析git log日志示例
Feb 27 #Python
python去掉字符串中重复字符的方法
Feb 27 #Python
tornado捕获和处理404错误的方法
Feb 26 #Python
python为tornado添加recaptcha验证码功能
Feb 26 #Python
python实现博客文章爬虫示例
Feb 26 #Python
python处理中文编码和判断编码示例
Feb 26 #Python
You might like
javascript removeChild 使用注意事项
2009/04/11 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
详解ES6中的代理模式——Proxy
2018/01/08 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
Python字符串详细介绍
2015/05/09 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
python 创建一个空dataframe 然后添加行数据的实例
2018/06/07 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
Django实现文件上传下载功能
2019/10/06 Python
使用tensorflow DataSet实现高效加载变长文本输入
2020/01/20 Python
pytorch简介
2020/11/11 Python
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
营销与策划个人求职信
2013/09/22 职场文书
医师定期考核实施方案
2014/05/07 职场文书
软件工程毕业生自荐信
2014/07/04 职场文书
租房安全协议书
2014/08/20 职场文书
党支部先进事迹材料
2014/12/24 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
Golang 空map和未初始化map的注意事项说明
2021/04/29 Golang
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js
python中mongodb包操作数据库
2022/04/19 Python