返回值为 4,并且我在管理模式下运行 Visual Studio,因此权限应该没问题。但我没有看到任何输入的内容。有什么帮助吗?我使用的是 Windows 7 x64。
INPUT input[4];
input[0].type = INPUT_KEYBOARD;
input[0].ki.wVk = 0;
input[0].ki.wScan = 'a';
input[0].ki.dwFlags = KEYEVENTF_SCANCODE;
input[0].ki.time = 0;
input[0].ki.dwExtraInfo = 0;
input[1].type = INPUT_KEYBOARD;
input[1].ki.wVk = 0;
input[1].ki.wScan = 'a';
input[1].ki.dwFlags = KEYEVENTF_KEYUP | KEYEVENTF_SCANCODE;
input[1].ki.time = 0;
input[1].ki.dwExtraInfo = 0;
input[2].type = INPUT_KEYBOARD;
input[2].ki.wVk = 0;
input[2].ki.wScan = 'a';
input[2].ki.dwFlags = KEYEVENTF_SCANCODE;
input[2].ki.time = 0;
input[2].ki.dwExtraInfo = 0;
input[3].type = INPUT_KEYBOARD;
input[3].ki.wVk = 0;
input[3].ki.wScan = 'a';
input[3].ki.dwFlags = KEYEVENTF_KEYUP | KEYEVENTF_SCANCODE;
input[3].ki.time = 0;
input[3].ki.dwExtraInfo = 0;
int retval = SendInput(4, input, sizeof(INPUT));
if(retval > 0)
{
wxLogDebug("SendInput sent %i", retval);
}
else
{
wxLogError("Unable to send input commands. Error is: %i", GetLastError());
}
最佳答案
您需要为每个键发送 KeyDown 和 KeyUp 事件。
要发送 KeyUp 事件,请将 dwFlags
设置为 KEYEVENTF_KEYUP
。
此外,您需要使用 wVk
而不是 wScan
。 (wScan
仅与 KEYEVENTF_UNICODE
一起使用)
关于c++ - SendInput (C++) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2367521/