SendInput使系统进入休眠状态

时间:2012-12-05 13:03:23

标签: 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;
}

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

1 个答案:

答案 0 :(得分:8)

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

#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;
}