Python实现windows下模拟按键和鼠标点击的方法
admin
2023-07-31 02:17:08
0

本文实例讲述了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程序设计有所帮助。

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python查找阿姆斯特朗数 题目解释 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...