Как определить, является ли Приложение Windows внеэкранным?

Вы можете использовать следующее:

list.first((list.length/2).ceil) # will convert 1.5 to 2

И

list.last((list.length/2).floor) # will convert 1.5 to 1
<час>

Проблема, с которой вы столкнулись, состоит в том, что [7,8,9][3/2] возвращает 8, и логика [114 ] (list.size / 2) использовался как в first_half, так и в last_half.

5
задан kgriffs 17 October 2008 в 19:55
поделиться

7 ответов

Просто используйте MonitorFromWindow с флагом MONITOR_DEFAULTTONULL. Если возвращаемое значение является пустым, Ваше окно не видимо. Можно впоследствии передать MONITOR_DEFAULTTONEAREST, чтобы смочь изменить местоположение окна на ближайшем мониторе.

8
ответ дан 18 December 2019 в 14:53
поделиться

В.NET Вы используете Экран. PrimaryScreen. Структура WorkingArea для получения границ основного экрана (Экран. Экранный [x].WorkingArea для других мониторов, я думаю), и затем используйте свойства Left и Top окна для обнаружения, где окно (если это будет от экрана, то Вершина и Левый будет больше, чем [Экран].Width и.Height.

1
ответ дан 18 December 2019 в 14:53
поделиться

Похоже, что GetMonitorInfo () является Win32, эквивалентный из предложения Danny. Я не уверен, как Вы пошли бы о получении HMONITOR для всех мониторов в системе, но похоже, что пример, связанный из документации, имеет некоторые способы сделать его.

0
ответ дан 18 December 2019 в 14:53
поделиться

Независимо от того, что Вы делаете, объясните несколько мониторов, которые могут иметь координаты тысячи пикселей далеко от (0,0) в любом направлении. Я ненавижу его, когда приложение сдерживает себя в другой экран, часто портя любые полноэкранные игры я могу быть в в то время.

1
ответ дан 18 December 2019 в 14:53
поделиться

Все основы на нескольких контролируют поддержку с июня 1997 Microsoft Systems Journal:

Расположение объектов на нескольких отображает установку:

2
ответ дан 18 December 2019 в 14:53
поделиться

В.NET я выполнил бы итерации на каждом Экране на Экране. AllScreen, затем любой экран вызова. Границы. Содержит () передачу прямоугольника Вашей формы, если Вы хотите удостовериться, что все Ваше окно в границах (*), или назовите экран. Границы. IntersectsWith (), если Вы только хотите удостовериться, по крайней мере, часть своей формы, видим.

(*) не являющийся полностью в экранных границах не означает, что это не в границах общих экранов. Вы могли также назвать Прямоугольник. Объединение на каждом экране ограничивает для создания единственного прямоугольника для тестирования прямоугольника формы против, но затем необходимо предостеречься, если экранные границы не имеют того же размера, так как englobing прямоугольник не полностью видим также.

Это было более длинным ответом. Более короткий: нет никакого простого способа, о котором я знаю.

1
ответ дан 18 December 2019 в 14:53
поделиться

Хм. Это не могло бы помочь, но когда я сделал VB, Вы могли сделать screen.width и screen.height, и затем window.x и window.y...

Конечно, я не знаю, как это работает с несколькими мониторами.

-1
ответ дан 18 December 2019 в 14:53
поделиться