Примечание. Хотя я не могу тестировать другую версию Windows, я подозреваю, что это проблема только с Windows 8 из-за угловых и боковых точек доступа.Мышь переходит в исходное местоположение после пересечения Montiors с функцией SendInput и схожими функциями
Я пытаюсь переместить курсор к указанным координатам, используя множество методов, таких как SendInput
, SetCursorPos
, mouse_event
и MoveMouse
от AutoHotKey/AutoIt. Он отлично работает при перемещении курсора из одного места в другое на том же мониторе, но не при переходе с одного монитора на другой.
При пересечении монитора, если мой указатель мыши находится на (100, 100)
на моем дополнительном мониторе справа, и я пытаюсь переместить указатель мыши на (0, 0)
, который находится на моем основном мониторе, он переместится туда и останется там, я могу щелкнуть мышь, GetCursorPos
скажет мне это в (0, 0)
, но как только я двигаю мышь вручную, курсор начинает двигаться от (0, 0)
на моем вторичного монитора (я немного соврал в названии для краткости.)
так что мой Вопрос: что я могу сделать? Как перенести курсор на монитор без повторного перехода к исходному монитору?
SendInput Пример C++:
int MouseMove(int x, int y) {
int screenWidth = GetSystemMetrics(SM_CXVIRTUALSCREEN);
int screenHeight = GetSystemMetrics(SM_CYVIRTUALSCREEN);
INPUT input;
input.type = INPUT_MOUSE;
input.mi.dx = round((x * 65535)/(screenWidth - 1));
input.mi.dy = round((x * 65535)/(screenHeight - 1));
input.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_VIRTUALDESK | MOUSEEVENTF_MOVE;
input.mi.mouseData = 0;
input.mi.time = 0;
input.mi.dwExtraInfo = 0;
return SendInput(1, &input, sizeof(INPUT));
}
AHK Пример:
CoordMode, Mouse, Screen
MouseMove, 0, 0, 0
AutoIt Пример:
MouseMove(0, 0, 0)
Хе-хе, просто используйте надлежащую ОС ... ;-) – Samoth
Не уверен, что это правильно, но если у вас есть два монитора, например. 1024, ваше разрешение - 2048. Поэтому перемещение до 0,0 действительно является первым дисплеем. Переместите мышь на (1024,0), если вы хотите находиться в левом верхнем углу второго монитора. – Milos
@Samoth Программа, предназначенная для работы только в Windows, к сожалению. = c – Nathan