windows7ノートパソコンでC++(VC++ではない)を使用しています。
マウスx/yを現在の位置から移動する方法に問題があります。マウスイベントの送信入力を呼び出すたびに、マウスを動かすだけでなく、画面(Fn + F2に相当)をオフにします。私は、プログラムをデバッグしていないだけでmi
もki
とhi
は値(これは、x = 25のためだった、yは25とabsolure =偽=)を持っていなかったことに気づいた:私は気を設定しようとした
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
をし、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;
}
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;
}
これはキーボード入力だけでなく、マウスを送信している理由は誰の事をことができます!私のラップトップの設定と関係がありますか?
ありがとうございます! =)
ki、mi、およびhiはユニオンです – chris
私は彼らが推測していたかもしれないが、なぜそれが私の画面をオフにしているのか説明していない! :/型フラグはINPUT_MOUSEに設定されているので、マウスイベントだけにしてください! – geekman92
'mi.time'を0に設定しましたか?私はそれをしないときに奇妙な結果を得た。 – chris