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 相关文章推荐
利用soaplib搭建webservice详细步骤和实例代码
Nov 20 Python
python算法学习之桶排序算法实例(分块排序)
Dec 18 Python
python使用PyFetion来发送短信的例子
Apr 22 Python
Python操作Access数据库基本步骤分析
Sep 19 Python
Python新手们容易犯的几个错误总结
Apr 01 Python
python装饰器实例大详解
Oct 25 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
Apr 27 Python
利用Anaconda简单安装scrapy框架的方法
Jun 13 Python
pygame游戏之旅 添加icon和bgm音效的方法
Nov 21 Python
python获取栅格点和面值的实现
Mar 10 Python
Python3.7下安装pyqt5的方法步骤(图文)
May 12 Python
基于python实现坦克大战游戏
Oct 27 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输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
php去掉文件前几行的方法
2015/07/29 PHP
Javascript - HTML的request类
2007/01/09 Javascript
最新28个很棒的jQuery 教程
2011/05/28 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
jQuery+Ajax实现无刷新操作
2016/01/04 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
2017/10/30 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
Python Sleep休眠函数使用简单实例
2015/02/02 Python
python使用tensorflow保存、加载和使用模型的方法
2018/01/31 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
django中使用Celery 布式任务队列过程详解
2019/07/29 Python
Django 拆分model和view的实现方法
2019/08/16 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
吉列剃须刀英国官网:Gillette英国
2019/03/28 全球购物
大专生毕业的自我评价
2014/02/06 职场文书
汽车维修工岗位职责
2014/02/12 职场文书
大学军训感言200字
2014/02/26 职场文书
经典洗发水广告词
2014/03/13 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python
5行Python代码实现一键批量扣图
2021/06/29 Python
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL