如果WM_KEYDOWN起作用,为什么WM_KEYUP不起作用?
Why WM_KEYUP doesn't work, if WM_KEYDOWN does?
PostMessage
中的 WM_KEYUP
, 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
不起作用
as @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
的值以控制密钥的上下状态。