WM_KEYUP
和PostMessage
中的 SendMessage
不起作用
我尝试将ASCII码从0x57
更改为0x005701
,因为我的朋友说它应该可以,但不能。
#include <iostream>
#include <windows.h>
using namespace std;
int KEY_DOWN = 0x57;
int main()
{
HWND hwnd;
if (!(hwnd = FindWindow(L"AAAA", NULL))) {
cout << "Couldn't find window";
}
else {
Sleep(5000);
PostMessage(hwnd, WM_SETFOCUS, NULL, NULL);
PostMessage(hwnd, WM_KEYDOWN, KEY_DOWN, NULL);
}
}
我想制作一个将WM_KEYDOWN
和WM_KEYUP
发送到具有PostMessage
或SendMessage
的应用程序,但WM_KEYUP
不起作用的应用程序
答案 0 :(得分:0)
正如@David Heffernan所说,SendInput可以做到。
这是最少的代码。
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{
HWND hwnd;
INPUT input[2];
memset(input, 0, sizeof(input));
if (!(hwnd = FindWindow(L"AAAA", NULL)))
{
cout << "Couldn't find window";
}
else
{
Sleep(5000);
input[0].type = input[1].type = INPUT_KEYBOARD;
SetForegroundWindow(hwnd);
input[0].ki.wVk = 'W';
input[0].ki.dwFlags = 0;
input[1].ki.wVk = 'W';
input[1].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(2, input, sizeof(INPUT));
}
return 0;
}
将按下和按下事件放入长度为2的数组中,并将它们作为 单个原子单元。
设置ki.dwFlags
的值可控制键的向上和向下状态。