我在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和喜为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;
}
OR
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;
}
任何人都可以的事情这是为什么送键盘输入以及鼠标?这只是我的笔记本电脑配置?
在此先感谢! =)
き,心肌梗死和喜是工会 – chris
我猜他们可能的了,但是这并不能解释为什么它是把我的屏幕关闭! :/ Type标志被设置为INPUT_MOUSE,所以应该只适用于鼠标事件! – geekman92
您是否将mi.time设置为0?如果不这样做,我会得到奇怪的结果。 – chris