Python制作模拟按键摘录,pyautogui库及该库在某些窗口不生效的问题部分解决措施(PyDirectInput库、winio驱动级模拟)




import pyautogui
import time
import ctypes
import win32gui
import win32con
 
# 定义一个函数用于模拟按键
def simulate_key(key):
    # 根据不同的操作系统使用不同的模块
    if pyautogui.PLATFORM == 'win32':
        # 模拟按键,这里使用win32api模块
        win32api.keybd_event(key, win32api.MapVirtualKey(key, 0), 0, 0)
        win32api.keybd_event(key, win32api.MapVirtualKey(key, 0), win32con.KEYEVENTF_KEYUP, 0)
    else:
        # 对于其他操作系统,使用pyautogui的press函数
        pyautogui.press(key)
 
# 定义一个函数用于获取当前活动窗口的句柄
def get_active_window():
    # 获取当前活动窗口的句柄
    hwnd = win32gui.GetForegroundWindow()
    # 返回句柄
    return hwnd
 
# 定义一个函数用于确保pyautogui在某些窗口不生效的情况下也能正常工作
def ensure_pyautogui_works(hwnd):
    # 首先尝试使用pyautogui.FAILSAFE = False禁用安全模式
    pyautogui.FAILSAFE = False
    # 然后使用ctypes模块将当前活动窗口置于顶层
    ctypes.windll.user32.SetForegroundWindow(hwnd)
 
# 示例使用
# 获取当前活动窗口句柄
hwnd = get_active_window()
# 确保pyautogui在某些窗口下也能正常工作
ensure_pyautogui_works(hwnd)
# 模拟按下'A'键
simulate_key('a')

这段代码首先定义了一个模拟按键的函数simulate_key,它根据不同的操作系统使用不同的模块来模拟按键。然后定义了一个获取当前活动窗口句柄的函数get_active_window。最后定义了一个确保pyautogui在某些窗口下也能正常工作的函数ensure_pyautogui_works,它通过禁用pyautogui的安全模式和使用ctypes将当前活动窗口置于顶层来解决在某些情况下pyautogui不生效的问题。最后,代码展示了如何使用这些函数来模拟按键和处理特定的窗口问题。

最后修改于:2024年08月11日 10:27

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日