У меня четыре монитора. Физически расположено так:
Код: Выделить всё
\\.\DISPLAY3Если я использую Windows.Forms. Класс Screen, чтобы получить границы, говорит мой основной монитор (
Код: Выделить всё
\\.\DISPLAY2Хорошо, допустим, я отправляю InjectSyntheticPointerInput с координатами . Это должно касаться центра моего основного монитора. Вместо этого это центр \\.\DISPLAY3 (крайний левый монитор). Я... что? Сообщенные границы \\.\DISPLAY3: {X=-1920,Y=0,Width=1920,Height=1080
Итак, я предположил и отправил (смещение по наименьшей заданной координате X). Это сработало, в мертвой точке моего основного монитора. Хорошо, мне нужно физическое местоположение, а не виртуальный экран.
Поэтому я попытался выполнить больше вызовов WinAPI, чтобы получить информацию напрямую. Импортировал EnumDisplayMonitors и использовал его для получения необходимой мне информации. Неа. который сообщает точно такие же границы. GetMonitorInfo... Нет, это та же информация. Нет ли способа запросить местоположение физического монитора?
Теперь я могу взять наименьшее значение X и наименьшее значение Y и сместить координаты каждого другого монитора на основе этого , тем самым «обнуляя» самую низкую точку и переопределяя начало координат, но является ли это «правильным» способом сделать это? Есть ли лучший способ запросить физические координаты вместо координат виртуального экрана?
Подробнее здесь: https://stackoverflow.com/questions/793 ... interinput
Мобильная версия