我想使用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) –