У меня есть приложение (точный метроном), которое всегда нужно открывать на мониторе (3/3), которое не используется (большую часть времени я держу его выключенным).

Кроме того, стандартные методы перемещения не работают (alt + правый клик или windows + стрелки).

У кого-нибудь есть хороший способ заставить приложение использовать единственный включенный монитор или утилиту, которая переместит приложение на включенные мониторы?

1 ответ1

0

Скопировал их из других ответов в Интернете и скомпилировал их здесь для вашего удобства (добавлены вещи для удобства чтения):

  1. Откройте приложение.
  2. Измените размер окна, чтобы оно не было развернуто или свернуто.
  3. Переместите окно на монитор, который вы хотите открыть по умолчанию.
  4. Закройте приложение. Не изменяйте размер до закрытия.
  5. Откройте приложение. Он должен открыться на мониторе, на который вы только что его перенесли, и закрыть его.
  6. Максимизируйте окно.

Причина, почему это работает, в два раза.

Правильно написанные приложения для Windows, которые хотят сохранить свое местоположение от запуска к запуску, сохранят результаты GetWindowPlacement() перед выключением, а затем при запуске используют SetWindowPlacement() чтобы восстановить свое положение.

Часто приложения будут хранить результаты GetWindowPlacement() в реестре как REG_BINARY для удобства использования.

У WINDOWPLACEMENTroute много преимуществ по сравнению с другими методами:

Обрабатывает случай, когда разрешение экрана изменилось с момента последнего запуска: SetWindowPlacement() автоматически гарантирует, что окно не полностью за пределами экрана. Сохраняет состояние (свернуто / развернуто), но также сохраняет восстановленные (нормальные) размер и положение. Правильно обрабатывает метрики рабочего стола, компенсация положения панели задач и т. д. (т. е. использует "координаты рабочего пространства" вместо "экранных координат") - методы, основанные на сохранении экранных координат, могут страдать от проблемы "ходящих окон", когда окно всегда будет появляться немного ниже если у пользователя есть панель инструментов в верхней части экрана). Наконец, программы, которые правильно обрабатывают восстановление окна, будут учитывать параметр nCmdShow, передаваемый из оболочки. Этот параметр устанавливается в ярлыке, который запускает приложение (Normal, Minimized, Maximize):

if(nCmdShow != SW_SHOWNORMAL)
    placement.showCmd = nCmdShow; //allow shortcut to override

Для приложений, отличных от Win32, важно быть уверенным, что метод, который вы используете для сохранения / восстановления положения окна, в конечном итоге использует тот же базовый вызов, в противном случае (например, setBounds()/getBounds() Java Swing) вы в конечном итоге получите написание большого количества дополнительного кода для повторной реализации функциональности, которая уже есть в функциях WINDOWPLACEMENT .

В качестве альтернативы вы можете использовать другие приложения, такие как: http://realtimesoft.com/ultramon/

Или просто перенесите приложение с монитора на монитор с помощью сочетания клавиш Shift + Win + [влево, вправо]. С его помощью вы можете переместить текущее активное окно на другой монитор.

Я надеюсь, что эти ответы будут вам полезны.

Ссылки:Как заставить приложения открываться на правильном мониторе при использовании нескольких мониторов? https://stackoverflow.com/questions/52755/what-determines-the-monitor-my-app-runs-on http://www.tenforums.com/general-support/14348-forcing-program-open-second -monitor-а-чем-main.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .