简单来说,就是想用Python实现AHK的SendRaw命令的功能,也就是不模拟键盘,不经剪贴板,直接将Unicode字符输出到任意插入点
——
问了AI n多次,结果都不行,pyautogui.write 不能写中文等非英文字符,有些要求识别插入点控件的又没法普适使用,用Win API的又没效果(没输出任何东西)……折腾了好久
——
这期间使用的是 Notepad2 等记事本衍生品来试验,试得都要红温了,索性把插入点放到Vscode,一试……居然行了,什么鬼事情?
——
所用的Python代码如下:
import win32gui
import win32api
import win32con
import time
def send_raw(text, hwnd=None):
"""
向目标窗口发送原始字符串(类似 AHK 的 SendRaw)
:param text: 要发送的字符串(支持中文、特殊符号)
:param hwnd: 目标窗口句柄(若为 None,则发送到当前焦点窗口)
"""
if hwnd is None:
hwnd = win32gui.GetForegroundWindow() # 获取当前焦点窗口
for char in text:
print(char)
# 发送 WM_CHAR 消息(支持 Unicode)
win32api.SendMessage(hwnd, win32con.WM_CHAR, ord(char), 0)
time.sleep(0.01) # 避免输入过快导致丢字
time.sleep(3)
send_raw("输入字符txt测试¥☆")
——
目前测试能够成功输入的目标程序有:vscode,各聊天软件,各浏览器,Everything Toolbar;
测试不能输入的目标程序有:记事本及其各种衍生mod,explorer,Process Explorer,Everything,WPS,MS Office
——
最后,跪求了,怎么让Python完美实现AHK的SendRaw功能?