发送输入使系统进入睡眠状态
SendInput putting the system to sleep
我正在尝试找出 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 结构有三个你没有初始化的成员 - dy
、mouseData
和 time
。由于文档没有提到默认值,我假设程序最初可以自由地用它想要的任何垃圾填充这些成员。应显式设置值以避免这种情况。
#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;
}
相关文章:
- C++,系统无法执行指定的程序
- 在UNIX系统中使用DIR查找文件的字节大小
- 错误处理.将系统错误代码映射到泛型
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 为什么系统函数总是在C++中返回已转移的退出状态?
- 从系统表中获取节点状态
- DirectX 11 调试器需要 Windows SDK 10,但它在 IDE 中处于选中状态并存在于系统中
- 发送输入使系统进入睡眠状态
- TrackPopupMenu 显示的系统菜单与窗口状态不匹配
- 使用C++查找系统电源状态
- 使用系统调用处理退出状态
- 列出可以通过C++和禁用/启用它们将系统从睡眠状态唤醒的设备?
- 如何使系统进入睡眠状态并再次自动(以编程方式)从睡眠状态恢复,而无需任何手动"鼠标单击或键盘点击"
- 用C++为嵌入式系统实现一个状态机
- 嵌入式系统状态模式:存储与异步事件相关的信息
- 如果系统处于活动状态,如何在C++中进行检查
- 一个基于c++窗口对话框的程序如何获取系统的一个状态
- 如何知道系统是否刚刚从睡眠状态中唤醒