Python实现windows下模拟按键和鼠标点击的方法


Posted in Python onMarch 13, 2015

本文实例讲述了Python实现windows下模拟按键和鼠标点击的方法。分享给大家供大家参考。具体如下:

这段代码可以模拟在窗口上按下按键、鼠标左键点击、鼠标右键点击、鼠标双击等等

#
# _*_ coding:UTF-8 _*_
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)
  win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 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_LEFTUP, 0, 0, 0, 0)
  win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
  win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 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)
if __name__ == "__main__":
  mouse_click(1024,470)
  str = 'hello'
  key_input(str)

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python设计模式之代理模式实例
Apr 26 Python
python2.7 json 转换日期的处理的示例
Mar 07 Python
对Python发送带header的http请求方法详解
Jan 02 Python
python dict 相同key 合并value的实例
Jan 21 Python
python 一个figure上显示多个图像的实例
Jul 08 Python
python验证码图片处理(二值化)
Nov 01 Python
Python代码生成视频的缩略图的实例讲解
Dec 22 Python
解决python 执行sql语句时所传参数含有单引号的问题
Jun 06 Python
python ssh 执行shell命令的示例
Sep 29 Python
用ldap作为django后端用户登录验证的实现
Dec 07 Python
Pytorch GPU内存占用很高,但是利用率很低如何解决
Jun 01 Python
Python函数中的不定长参数相关知识总结
Jun 24 Python
Python实现测试磁盘性能的方法
Mar 12 #Python
Python解析xml中dom元素的方法
Mar 12 #Python
Python实现Tab自动补全和历史命令管理的方法
Mar 12 #Python
Python实现将n个点均匀地分布在球面上的方法
Mar 12 #Python
Python求解平方根的方法
Mar 11 #Python
python自动格式化json文件的方法
Mar 11 #Python
python处理csv数据的方法
Mar 11 #Python
You might like
在项目中寻找代码的坏命名
2012/07/14 PHP
php while循环控制的简单实例
2016/05/30 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
自己做的模拟模态对话框实现代码
2012/05/23 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
AngularJS监听路由变化的方法
2017/03/07 Javascript
微信小程序开发之IOS和Android兼容的问题
2017/09/26 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
vue搜索和vue模糊搜索代码实例
2019/05/07 Javascript
[02:23]DOTA2英雄基础教程 幻影长矛手
2013/12/09 DOTA
python 快速排序代码
2009/11/23 Python
Python爬取三国演义的实现方法
2016/09/12 Python
python实现简单中文词频统计示例
2017/11/08 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
Python List cmp()知识点总结
2019/02/18 Python
Django框架用户注销功能实现方法分析
2019/05/28 Python
详解python常用命令行选项与环境变量
2020/02/20 Python
利用django创建一个简易的博客网站的示例
2020/09/29 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
使用CSS3 制作一个material-design 风格登录界面实例
2016/12/12 HTML / CSS
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
EJB的角色和三个对象
2015/12/31 面试题
汽车驾驶求职信
2013/10/25 职场文书
生产主管岗位职责
2013/11/10 职场文书
酒店中秋节促销方案
2014/01/30 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
爱护公共设施倡议书
2014/08/29 职场文书
解除同居协议书
2015/01/29 职场文书
纪律委员竞选稿
2015/11/19 职场文书
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android