发送输入使系统进入睡眠状态

SendInput putting the system to sleep

本文关键字:状态 系统 输入      更新时间:2023-10-16

我正在尝试找出 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 功能要么让我的计算机进入睡眠状态,要么至少关闭我的显示器,这当然是一种不良影响!注释掉该行可以防止问题发生,但显然我需要它来执行任务。我做错了什么?

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