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使用cx_Oracle模块将oracle中数据导出到csv文件的方法
May 16 Python
Django返回json数据用法示例
Sep 18 Python
关于python的bottle框架跨域请求报错问题的处理方法
Mar 19 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
Apr 11 Python
python中的break、continue、exit()、pass全面解析
Aug 05 Python
python里使用正则的findall函数的实例详解
Oct 19 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
May 30 Python
Python 获取中文字拼音首个字母的方法
Nov 28 Python
详解Python sys.argv使用方法
May 10 Python
利用PyQt中的QThread类实现多线程
Feb 18 Python
python脚本定时发送邮件
Dec 22 Python
如何Python使用re模块实现okenizer
Apr 30 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实现文件安全下载
2006/10/09 PHP
如何在PHP中使用Oracle数据库(5)
2006/10/09 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
yii数据库的查询方法
2015/12/28 PHP
简单的自定义php模板引擎
2016/08/26 PHP
PHP图片添加水印功能示例小结
2016/10/03 PHP
阿里对象存储OSS在laravel框架中的使用方法
2019/10/13 PHP
EXT中xtype的含义分析
2010/01/07 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
chrome不支持form.submit的解决方案
2015/04/28 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
vue结合axios与后端进行ajax交互的方法
2018/07/06 Javascript
angular 数据绑定之[]和{{}}的区别
2018/09/25 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
Python中标准模块importlib详解
2017/04/16 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
Windows平台Python编程必会模块之pywin32介绍
2019/10/01 Python
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
J2EE相关知识面试题
2013/08/26 面试题
中秋节国旗下演讲稿
2014/09/05 职场文书
文艺节目主持词
2015/07/06 职场文书
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python
JavaScript流程控制(循环)
2021/12/06 Javascript