我想使用SendInput()函数来自动按下一些按键。为什么不是SendInput()工作?
我的代码:
#include "stdafx.h"
#include <iostream>
#include <string>
#include <Windows.h>
using std::cin;
using std::cout;
using std::string;
void presskeys(string s){
INPUT ip;
ip.ki.wScan = 0;
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
HKL kbl = GetKeyboardLayout(0);
for (unsigned int i = 0; i < s.length(); ++i) {
ip.type = INPUT_KEYBOARD;
char c = s[i];
int vk = VkKeyScanEx((WCHAR)c, kbl);
ip.ki.wVk = vk;
SendInput(1, &ip, sizeof(ip));
ip.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &ip, sizeof(ip));
}
}
int main()
{
cout << "Enter a string!\n";
string str;
cin >> str;
Sleep(5000);
presskeys(str);
cout << "Done!\n";
return 0;
}
我启动该程序,然后输入一个字符串,只为没有发生。它出了什么问题?
检查从sendinput返回代码和调用GetLastError。 –
什么应用程序应该接收此输入?研究UIPI。 –
@RemyLebeau“这个函数在被UIPI阻塞时失败。请注意,GetLastError和返回值都不能表明失败是由UIPI阻塞引起的。” [每发送输入函数的msdn描述](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v = vs.85).aspx) –