SendInput使系统进入休眠状态

Cs *_*s ツ 11 c++

我正在试图弄清楚SendInput函数的正确使用,所以我可以直接操作屏幕上的光标,所以为了看看事情是如何工作的基本测试,我制作了这个简短的片段,应该将光标移动10个像素到对.理论上.

#include <windows.h>
#include <winable.h>

int main()
{
    INPUT joyInput;
    joyInput.type = INPUT_MOUSE;
    joyInput.mi.dx = 10;
    joyInput.mi.dwFlags = MOUSEEVENTF_MOVE;
    SendInput(1, &joyInput, sizeof(INPUT));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,在实践中,SendInput功能要么让我的电脑进入睡眠状态,要么至少关闭我的显示器,这当然是一种不必要的效果!评论该行可以防止问题发生,但显然我需要它来执行任务.我究竟做错了什么?

Kev*_*vin 8

MOUSEINPUT结构有你没有初始化三名成员- dy,mouseDatatime.由于文档没有提到默认值,我假设程序可以自由地用这些成员填充它想要的任何垃圾.您应该明确设置值以避免这种情况.

#include <windows.h>
#include <winable.h>

int main()
{
    INPUT joyInput;
    joyInput.type = INPUT_MOUSE;
    joyInput.mi.dx = 10;
    joyInput.mi.dwFlags = MOUSEEVENTF_MOVE;

    joyInput.mi.dy = 0;
    joyInput.mi.mouseData = 0;
    joyInput.mi.time = 0;

    SendInput(1, &joyInput, sizeof(INPUT));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)