我在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