Границы экрана не совпадают с InjectSyntheticPointerInputC#

Место общения программистов C#
Ответить
Anonymous
 Границы экрана не совпадают с InjectSyntheticPointerInput

Сообщение Anonymous »

Я работаю над приложением, которое принимает сенсорный ввод или ввод пером с устройства Android и отправляет их на ПК. Подавляющее большинство сделано, но сейчас я работаю над такими вещами, как переключение мониторов и другими мелкими тонкостями.. У меня возникла заминка.
У меня четыре монитора. Физически расположено так:

Код: Выделить всё

\\.\DISPLAY3
\\.\DISPLAY2 \\.\DISPLAY1 \\.\DISPLAY4
Если я использую Windows.Forms. Класс Screen, чтобы получить границы, говорит мой основной монитор (

Код: Выделить всё

\\.\DISPLAY2
) — {X=0,Y=0,Width=1920,Height=1080}. Это, конечно, из-за виртуального экрана; основной монитор определяет . Я это понимаю.
Хорошо, допустим, я отправляю InjectSyntheticPointerInput с координатами . Это должно касаться центра моего основного монитора. Вместо этого это центр \\.\DISPLAY3 (крайний левый монитор). Я... что? Сообщенные границы \\.\DISPLAY3: {X=-1920,Y=0,Width=1920,Height=1080
Итак, я предположил и отправил (смещение по наименьшей заданной координате X). Это сработало, в мертвой точке моего основного монитора. Хорошо, мне нужно физическое местоположение, а не виртуальный экран.
Поэтому я попытался выполнить больше вызовов WinAPI, чтобы получить информацию напрямую. Импортировал EnumDisplayMonitors и использовал его для получения необходимой мне информации. Неа. который сообщает точно такие же границы. GetMonitorInfo... Нет, это та же информация. Нет ли способа запросить местоположение физического монитора?
Теперь я могу взять наименьшее значение X и наименьшее значение Y и сместить координаты каждого другого монитора на основе этого , тем самым «обнуляя» самую низкую точку и переопределяя начало координат, но является ли это «правильным» способом сделать это? Есть ли лучший способ запросить физические координаты вместо координат виртуального экрана?

Подробнее здесь: https://stackoverflow.com/questions/793 ... interinput
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»