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连接mysql并提交mysql事务示例
Mar 05 Python
Python中字典(dict)和列表(list)的排序方法实例
Jun 16 Python
Python的内存泄漏及gc模块的使用分析
Jul 16 Python
Python找出最小的K个数实例代码
Jan 04 Python
使用Py2Exe for Python3创建自己的exe程序示例
Oct 31 Python
python utc datetime转换为时间戳的方法
Jan 15 Python
把pandas转换int型为str型的方法
Jan 29 Python
python调用动态链接库的基本过程详解
Jun 19 Python
Django 请求Request的具体使用方法
Nov 11 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
详解python程序中的多任务
Sep 16 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
PL-880隐藏功能
2021/03/01 无线电
php在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
thinkPHP框架实现的无限回复评论功能示例
2018/06/09 PHP
用Javascript读取中文COOKIE的解决办法
2007/02/15 Javascript
js 小贴士一星期合集
2010/04/07 Javascript
页面使用密码保护代码
2013/04/10 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
node.js中的path.normalize方法使用说明
2014/12/08 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
js仿拉勾网首页穿墙广告效果
2017/03/08 Javascript
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
javascript和php使用ajax通信传递JSON的实例
2018/08/21 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
利用pyecharts读取csv并进行数据统计可视化的实现
2020/04/17 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
涉外文秘个人求职的自我评价
2013/10/07 职场文书
安全生产宣传标语
2014/06/06 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
导游欢送词
2015/01/31 职场文书
田径运动会广播稿
2015/08/19 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
CSS3中Animation实现简单的手指点击动画的示例
2021/07/15 HTML / CSS