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新手实现2048小游戏
Mar 31 Python
5个很好的Python面试题问题答案及分析
Jan 19 Python
Python3.6日志Logging模块简单用法示例
Jun 14 Python
python 获取微信好友列表的方法(微信web)
Feb 21 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 Python
超简单的Python HTTP服务
Jul 22 Python
PyCharm更改字体和界面样式的方法步骤
Sep 27 Python
利用Python产生加密表和解密表的实现方法
Oct 15 Python
TensorFlow索引与切片的实现方法
Nov 20 Python
Python类反射机制使用实例解析
Dec 30 Python
python图片合成的示例
Nov 09 Python
Python基础学习之奇异的GUI对话框
May 27 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
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
php 数组元素快速去重
2017/05/05 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
ie 调试javascript的工具
2009/04/29 Javascript
使用jQuery.fn自定义jQuery翻页插件
2013/01/20 Javascript
JS的document.all函数使用示例
2013/12/30 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
jQuery倒计时代码(超简单)
2017/02/27 Javascript
AngularJS2 与 D3.js集成实现自定义可视化的方法
2017/12/01 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
nodejs log4js 使用详解
2019/05/31 NodeJs
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
python操作 hbase 数据的方法
2016/12/18 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
Python协程的用法和例子详解
2017/09/09 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
怎样比较两个类型为String的字符串
2016/08/17 面试题
医学类个人求职信范文
2014/02/05 职场文书
会计毕业自我鉴定
2014/02/05 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
党员证明信
2015/06/19 职场文书
环保守法证明
2015/06/24 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书