【发布时间】:2015-04-11 19:58:07
【问题描述】:
我正在学习如何使用 SendInput(),但遇到了一个问题。每当我尝试模拟左键单击时,屏幕总是黑屏。这是我的代码:
#include <Windows.h>
void MouseLeftClick(){
INPUT ip;
ip.type = INPUT_MOUSE;
ip.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
SendInput(1, &ip, sizeof(INPUT));
ip.mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(1, &ip, sizeof(INPUT));
}
void PressKey(int keyCode){
INPUT ip;
ip.type = INPUT_KEYBOARD;
ip.ki.wVk = keyCode;
ip.ki.dwFlags = 0;
SendInput(1, &ip, sizeof(INPUT));
ip.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &ip, sizeof(INPUT));
}
int main(){
while (true){
if (GetAsyncKeyState(VK_END)){
MouseLeftClick();
Sleep(1000);
}
}
}
当我模拟按键时也不会发生。
【问题讨论】:
-
当我测试代码时没有发生任何类似的事情。它按预期工作。
-
您没有初始化结构上的所有字段。一次发送一个事件也是错误的。按照文档说明进行批量处理。
-
将
1作为第一个参数传递给SendInput,然后连续调用两次是总是错误的。考虑彻底阅读documenation。