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 相关文章推荐
Python 开发Activex组件方法
Nov 08 Python
Python爬虫:通过关键字爬取百度图片
Feb 17 Python
python实现上传下载文件功能
Nov 19 Python
python中如何使用正则表达式的集合字符示例
Oct 09 Python
Python实现的选择排序算法示例
Nov 29 Python
关于Tensorflow中的tf.train.batch函数的使用
Apr 24 Python
python使用xlrd和xlwt读写Excel文件的实例代码
Sep 05 Python
python如何实现视频转代码视频
Jun 17 Python
Python argparse模块应用实例解析
Nov 15 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
django正续或者倒序查库实例
May 19 Python
python包的导入方式总结
Mar 02 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
PHP面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
laravel 5 实现模板主题功能
2015/03/02 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
Ext对基本类型的扩展 ext,extjs,format
2010/12/25 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
node.js不得不说的12点内容
2014/07/14 Javascript
基于JS实现限时抢购倒计时间表代码
2017/05/09 Javascript
jquery仿京东商品放大浏览页面
2017/06/06 jQuery
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
ESLint 是如何检查 .vue 文件的
2020/11/30 Vue.js
[02:22]2018DOTA2亚洲邀请赛VG赛前采访
2018/04/03 DOTA
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
2017/07/06 Python
Python实现简单http服务器
2018/04/12 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
德国网上花店:Valentins
2018/08/15 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
会计专业自我评价
2014/02/12 职场文书
服装设计师求职信
2014/06/04 职场文书
与美同行演讲稿
2014/09/13 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
课改心得体会范文
2016/01/25 职场文书
golang 生成对应的数据表struct定义操作
2021/04/28 Golang
python引入其他文件夹下的py文件具体方法
2021/05/23 Python