模拟左键时屏幕变黑

时间:2015-04-11 19:58:07

标签: c++ winapi keypress

我正在学习如何使用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 个答案:

答案 0 :(得分:1)

ZeroMemory(&ip, sizeof(ip));行之后添加INPUT ip;将解决您的问题。