我正在尝试使用 WinAPI 函数创建一个工作函数,以在其他应用程序(例如记事本)中逐个键写入给定的文本SendMessage
。我有这样的代码:
//
SendMessage(handle, WM_CHAR, 0x41, 0);
SendMessage(handle, WM_CHAR, (int)Keys.A, 0); // 0x41
SendMessage(handle, WM_CHAR, (int)'A', 0); // 0x41
SendMessage(handle, WM_CHAR, (int)'a', 0); // 0x61
//
SendMessage(handle, WM_CHAR, (int)Keys.Space, 0);
//
SendMessage(handle, WM_KEYDOWN, (int)Keys.Shift, 0);
SendMessage(handle, WM_CHAR, 0x41, 0);
SendMessage(handle, WM_CHAR, (int)Keys.A, 0); // 0x41
SendMessage(handle, WM_CHAR, (int)'A', 0); // 0x41
SendMessage(handle, WM_CHAR, (int)'a', 0); // 0x61
SendMessage(handle, WM_KEYUP, (int)Keys.Shift, 0);
//
应该写出如下输出:
aaa1 AAA1
但这段代码写道:
AAAa AAAa
为什么会这样?0x41
是键的虚拟键代码A,没有Shift按下它应该创建小写字母a
,并且 [char a
= 0x61
] 真的不会在输出上放置小写“a”,而是在数字键盘上放置 1(
VK_NUMPAD1 0x61
数字键盘1
键),如本网站所示:
SendMessage
任何人都知道如何通过其他应用程序发送小写和大写字母?