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回调函数的使用方法
Jan 23 Python
Python编码爬坑指南(必看)
Jun 10 Python
python中根据字符串调用函数的实现方法
Jun 12 Python
简单了解python模块概念
Jan 11 Python
python实现的自动发送消息功能详解
Aug 15 Python
Python 实现取多维数组第n维的前几位
Nov 26 Python
django框架两个使用模板实例
Dec 11 Python
Python递归及尾递归优化操作实例分析
Feb 01 Python
python检查目录文件权限并修改目录文件权限的操作
Mar 11 Python
不到20行实现Python代码即可制作精美证件照
Apr 24 Python
python框架flask入门之路由及简单实现方法
Jun 07 Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 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
PHP对象Object的概念 介绍
2012/06/14 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
2016/07/25 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
一个tab标签切换效果代码
2009/03/27 Javascript
小议javascript 设计模式 推荐
2009/10/28 Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
2013/12/02 Javascript
js和jquery如何获取图片真实的宽度和高度
2014/09/28 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
2016/01/08 Javascript
javascript中的深复制详解及实例分析
2016/12/29 Javascript
javascript操作cookie
2017/01/17 Javascript
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
js实现移动端导航点击自动滑动效果
2017/07/18 Javascript
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
2017/09/28 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
Vue触发式全局组件构建的方法
2018/11/28 Javascript
Vue中遍历数组的新方法实例详解
2019/07/21 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
js实现滑动进度条效果
2020/08/21 Javascript
Python with用法实例
2015/04/14 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
Python 从subprocess运行的子进程中实时获取输出的例子
2019/08/14 Python
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
什么是封装
2013/03/26 面试题
带薪年假请假条
2014/02/04 职场文书
交通事故委托书范本精选
2014/10/04 职场文书
2014年司法所工作总结
2014/11/22 职场文书
婚礼父母致辞
2015/07/28 职场文书
工作感想范文
2015/08/07 职场文书
如何拟写通知正文?
2019/04/02 职场文书