当前位置: 首页 > news >正文

pywin32后台键鼠

1 后台键鼠操作

  • 组合键不生效,并且按键按下会触发两次,不知道为什么?有大佬知道了,请指教一下!
import time
import win32api
import win32con
import win32guiclass VirtualKeyboard:def __init__(self, hwnd):self.hwnd = hwndself.hwnd_title = win32gui.GetWindowText(hwnd)# 模拟一次按键的输入,间隔值默认0.1Sdef key_press(self, key: str, interval=0.1):key = ord(key.upper())win32api.PostMessage(self.hwnd, win32con.WM_KEYDOWN, key, 0)time.sleep(interval)win32api.PostMessage(self.hwnd, win32con.WM_KEYUP, key, 0)# 模拟一个按键的按下def key_down(self, key: str):key = ord(key.upper())win32api.PostMessage(self.hwnd, win32con.WM_KEYDOWN, key, 0)# 模拟一个按键的弹起def key_up(self, key: str):key = ord(key.upper())win32api.PostMessage(self.hwnd, win32con.WM_KEYUP, key, 0)# 模拟鼠标的移动def mouse_move(self, x, y):x = int(x)y = int(y)point = win32api.MAKELONG(x, y)win32api.PostMessage(self.hwnd, win32con.WM_MOUSEMOVE, None, point)# 模拟鼠标的按键抬起def mouse_up(self, x, y, button="L"):x = int(x)y = int(y)button = button.upper()point = win32api.MAKELONG(x, y)if button == "L":win32api.PostMessage(self.hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, point)elif button == "R":win32api.PostMessage(self.hwnd, win32con.WM_RBUTTONUP, win32con.MK_RBUTTON, point)# 模拟鼠标的按键按下def mouse_down(self, x, y, button="L"):x = int(x)y = int(y)button = button.lower()point = win32api.MAKELONG(x, y)if button == "L":win32api.PostMessage(self.hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, point)elif button == "R":win32api.PostMessage(self.hwnd, win32con.WM_RBUTTONDOWN, win32con.MK_RBUTTON, point)# 模拟鼠标的左键双击def mouse_double(self, x, y):x = int(x)y = int(y)point = win32api.MAKELONG(x, y)win32api.PostMessage(self.hwnd, win32con.WM_LBUTTONDBLCLK, win32con.MK_LBUTTON, point)win32api.PostMessage(self.hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, point)# 模拟鼠标移动到坐标,并进行左键单击def mouse_move_press(self, x, y):x = int(x)y = int(y)point = win32api.MAKELONG(x, y)win32api.PostMessage(self.hwnd, win32con.WM_MOUSEMOVE, None, point)win32api.PostMessage(self.hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, point)win32api.PostMessage(self.hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, point)# 模拟鼠标移动到坐标,并进行左键双击def mouse_move_press_double(self, x, y):x = int(x)y = int(y)point = win32api.MAKELONG(x, y)win32api.PostMessage(self.hwnd, win32con.WM_MOUSEMOVE, None, point)win32api.PostMessage(self.hwnd, win32con.WM_LBUTTONDBLCLK, win32con.MK_LBUTTON, point)win32api.PostMessage(self.hwnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, point)if __name__ == '__main__':# 1.根据窗口标题获取句柄,通过标题查找,仅返回一个顶层窗口的句柄,不支持模糊查询try:# 获取窗口句柄handle = win32gui.FindWindow("Notepad", None)  # 通过窗口标题获取窗口句柄print("窗口句柄是:{}".format(handle))vkb = VirtualKeyboard(67626)# vkb.mouse_move(100,100)vkb.mouse_move_press(50, 50)vkb.key_press("A")except Exception as e:print("窗口句柄获取失败:{}".format(e))
http://www.lryc.cn/news/250281.html

相关文章:

  • 大屏适配方案(vw、vh)
  • 【QuickSort】单边快排思路及实现
  • C++:继承
  • 苍穹外卖--客户催单
  • 春秋云境:CVE-2022-32991(sql注入)
  • css实现鼠标移入背景图片变灰并浮现文字的效果
  • ES-深入理解倒排索引
  • linux NAT网卡配置static
  • 信奥编程 1168:大整数加法
  • k8s上Pod全自动调度、定向调度、亲和性调度、污点和容忍调度详解
  • C# 动态编译代码并执行
  • nginx配置反向代理及负载均衡
  • 【古月居《ros入门21讲》学习笔记】09_订阅者Subscriber的编程实现
  • Java全栈基础篇--集合
  • Facebook公共主页受限、被封?一文教你排雷解决
  • Day04:每日一题:2661. 找出叠涂元素
  • SpringBoot 整合Redis
  • tensorflow-gpu1.15 + win11 + RTX 4050环境配置
  • jmeter资料
  • 代码随想录算法训练营第三十六天| 435 无重叠区间 763 划分字母区间 56 合并区间
  • 2023-12-01 事业-代号s-引流技巧和营销思路
  • 反转链表的Java实现
  • 2022年1月14日 Go生态洞察:Go 1.18 新教程探索
  • 国内某知名半导体公司:实现虚拟化环境下的文件跨网安全交换
  • 14.Tomcat和HTTP协议-[一篇通]
  • 在线陪诊系统: 医疗科技的崭新前沿
  • MySQL的基础知识
  • 【EI会议征稿】第七届大数据与应用统计国际学术研讨会(ISBDAS 2024)
  • 最轻量级最完整的屏幕适配完全适配各个手机方案
  • IDEA安装python插件并配置