这引起了我的注意。我正在逆向工程一个Java项目,该项目旨在实现某些桌面任务的宏自动化。与其他主动移动现实光标的程序不同,该项目通过WinApi发送消息。这使得应用程序认为使用了单击/键入,而实际用户输入不会中断,其他程序不受影响。我很久以前就想过类似的事情,但不知道该怎么做。
为了在字段中键入字符串,项目使用了非常简单的方法:
public void typeString(String text) {
for (char key : text.toCharArray()) {
sendMsg(258, key, 0);
}
}
sendMsg包含winapi SendMessage的地方:
SendMessage(hwnd, 258, key, 0);
嗯,这对abcd
之类的东西来说毫无疑问。但即使对于带有变音符号的角色,我也能使用它!
现在我期待像破坏功能键操作或类似的东西。我对此事的疑问是:
答案 0 :(得分:1)
“......键盘上的任何字符”真的取决于你的键盘。记录WM_CHAR
以处理UTF-16 如果 目标窗口是Unicode(CreateWindowW)。要支持BMP之外的字符,您应该使用WM_UNICHAR
...