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 24 Python
详解在Python程序中使用Cookie的教程
Apr 30 Python
Python编程之event对象的用法实例分析
Mar 23 Python
Python模块WSGI使用详解
Feb 02 Python
Python编程在flask中模拟进行Restful的CRUD操作
Dec 28 Python
python ipset管理 增删白名单的方法
Jan 14 Python
Python supervisor强大的进程管理工具的使用
Apr 24 Python
Python实现图像去噪方式(中值去噪和均值去噪)
Dec 18 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
Mar 24 Python
python之语音识别speech模块
Sep 09 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 Python
Python中可变和不可变对象的深入讲解
Aug 02 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
Smarty+QUICKFORM小小演示
2007/02/25 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
javascript是怎么继承的介绍
2012/01/05 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
JavaScript获取表单内所有元素值的方法
2015/04/02 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
js实现界面向原生界面发消息并跳转功能
2016/11/22 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
js 两数组去除重复数值的实例
2017/12/06 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
2019/11/01 jQuery
Preload基础使用方法详解
2020/02/03 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
python list使用示例 list中找连续的数字
2014/01/27 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
Python爬取某平台短视频的方法
2021/02/08 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
英国最大的海报商店:GB Posters
2018/03/20 全球购物
农民入党思想汇报
2014/01/03 职场文书
我的祖国演讲稿
2014/05/04 职场文书
2014年党支部承诺书
2014/05/30 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
英文道歉信
2015/01/20 职场文书
遗愿清单观后感
2015/06/09 职场文书
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android