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 相关文章推荐
35个Python编程小技巧
Apr 01 Python
Python中的自定义函数学习笔记
Sep 23 Python
python实现带错误处理功能的远程文件读取方法
Apr 29 Python
初步讲解Python中的元组概念
May 21 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
Feb 19 Python
Python检查和同步本地时间(北京时间)的实现方法
Dec 03 Python
Python Cookie 读取和保存方法
Dec 28 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
python爬虫用mongodb的理由
Jul 28 Python
Python3爬虫中pyspider的安装步骤
Jul 29 Python
python实现经典排序算法的示例代码
Feb 07 Python
使用pycharm运行flask应用程序的详细教程
Jun 07 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
phpfans留言版用到的install.php
2007/01/04 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
PHP实现文件下载详解
2014/11/27 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
JavaScript表单常用验证集合
2008/01/16 Javascript
juqery 学习之四 筛选查找
2010/11/30 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
基于vue2.0+vuex+localStorage开发的本地记事本示例
2017/02/28 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
JavaScript设计模式---单例模式详解【四种基本形式】
2020/05/16 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
Python采集腾讯新闻实例
2014/07/10 Python
Python利用Beautiful Soup模块搜索内容详解
2017/03/29 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
python Event事件、进程池与线程池、协程解析
2019/10/25 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
施华洛世奇中国官网:SWAROVSKI中国
2020/06/16 全球购物
SQL SERVER面试资料
2013/03/30 面试题
茶叶生产计划书
2014/01/10 职场文书
新年主持词
2014/03/27 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
旅游安全协议书
2014/04/21 职场文书
贷款担保申请书
2014/05/20 职场文书
开工典礼策划方案
2014/05/23 职场文书
乔丹名人堂演讲稿
2014/05/24 职场文书
上课说话检讨书500字
2014/11/01 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL