发送输入发送鼠标输入和键盘输入
SendInput sending mouse input AND keyboard input
=)
我在Windows7笔记本电脑上使用C++(不是VC ++)。
我对这种将鼠标 x/y 从当前位置移动的方法有问题。每次它调用鼠标事件的发送输入时,它都会移动鼠标,但也会关闭我的屏幕(相当于 Fn+F2)。我调试了程序,注意到不仅mi
而且ki
和hi
都有值(这是针对 x=25、y=25 和 absolure=false):
mi:
dx 25
dy 25
mouseData 0
dwFlags 1
time 2686400
dwExtraInfo 0
ki:
wVk 25
wScan 0
dwFlags 25
time 0
dwExtraInfo 1
hi:
uMsg 25
wParamL 25
wParamH 0
我尝试将 ki 和 hi 设置为 0,但如果我这样做,那么 mi 也设置为 0,然后没有鼠标移动,但屏幕仍然进入睡眠状态! :$
以下是我使用的一些方法。
int Controller::mouse_move(long x, long y, bool absolute) {
mouse.dx = x;
mouse.dy = y;
if (absolute) {
mouse.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
}else{
mouse.dwFlags = MOUSEEVENTF_MOVE;
}
mouse.mouseData = 0;
mouse.dwExtraInfo = 0;
input.type = INPUT_MOUSE;
input.mi = mouse;
SendInput(1, &input, sizeof (input));
return 0;
}
或
int Controller::mouse_move(long x, long y, bool absolute, int index_vector_no) {
input.type = INPUT_MOUSE;
input.mi.dx = x;
input.mi.dy = y;
if (absolute) {
input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
}else{
input.mi.dwFlags = MOUSEEVENTF_MOVE;
}
input.mi.mouseData = 0;
input.mi.dwExtraInfo = 0;
input.ki.dwExtraInfo = 0;
input.ki.dwFlags = 0;
input.ki.time = 0;
input.ki.wScan = 0;
input.ki.wVk = 0;
input.hi.uMsg = 0;
input.hi.wParamH = 0;
input.hi.wParamL = 0;
SendInput(1, &input, sizeof (input));
return 0;
}
谁能知道为什么这会发送键盘输入和鼠标?! 这只是与我的笔记本电脑配置有关吗?
提前感谢! =)
其他人改变的原因是因为他们都在一个联合中,所以他们共享相同的记忆。
关于屏幕关闭,您没有将mi.time
设置为 0,因此它未初始化。通常,最好开始初始化这些结构以{0},这样您就不会忘记事情。时间戳变成某个随机数,这可能会导致显示超时。
你可以使用这个:
input.mi.time = 0;
以前:
input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP;
它对我有用。
相关文章:
- 视窗键盘输入 c++
- 将鼠标和键盘输入发送到 unity3d 游戏 (Rust)
- C ++异步键盘输入(标准方式)
- 盖奇不读取键盘输入
- 在 Linux 上C++:在作为 systemd 服务运行时侦听键盘输入
- 是否可以将键盘输入绑定到 Win32 中的单个应用程序?
- 使用 Windows API c++ 的键盘输入
- 如何使 std::istream 从键盘获取输入(如 std::cin)?
- 如何检查从键盘输入的特定整数值是否存在于C++文件中的一行或多行中
- 为什么如果我从键盘输入EOF克里昂不要在运行窗口打印程序的输出?
- 从特定 USB 端口捕获键盘输入
- 使用 fgets() 从键盘读取时从以前的输入读取换行符
- 使用 sfml 进行 2 个键盘输入
- 如何对并行键盘输入进行编程
- 区分键盘记录器中的密码和其他类型的键盘输入
- 如何通过键盘或分数文件输入分数
- OpenGL/GLFW/GLM-键盘输入无反应
- 在 MFC 应用中模拟应用内的键盘输入C++
- 如何在C++中终止具有键盘输入的侦听 TCP 服务器
- 通过键盘输入字符串数组和 int 数组的数组大小