gpt4 book ai didi

c++ - SendInput 发送鼠标输入和键盘输入

转载 作者:行者123 更新时间:2023-11-27 23:24:20 31 4
gpt4 key购买 nike

=)

我在 Windows7 笔记本电脑上使用 C++(不是 VC++)。

我对这种从当前位置移动鼠标 x/y 的方法有疑问。每次它为鼠标事件调用发送输入时,它都会移动鼠标,但也会关闭我的屏幕(相当于 Fn+F2)。我调试了程序并注意到不仅 mi 而且 kihi 都有值(这是 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;
}

任何人都知道为什么这会发送键盘输入和鼠标输入吗?!这只是与我的笔记本电脑配置有关吗?

提前致谢! =)

最佳答案

其他人改变的原因是因为他们都在一个 union 体中,所以他们共享相同的内存。

关于熄屏,你没有设置mi.time为0,所以没有初始化。开始将这些结构初始化为 {0} 通常是个好主意,这样您就不会忘记事情。时间戳变成一些随机数,这会导致显示超时。

关于c++ - SendInput 发送鼠标输入和键盘输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10471685/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com