как вы контролируете, на каком мониторе открывается ваше приложение?

<p>как пользователь с двумя мониторами на работе, я заметил, что приложения ведут себя по-разному в отношении того, на каком мониторе они открываются (основной или дополнительный монитор, последний монитор, на котором было открыто приложение, и т.д.). честно говоря, некоторые приложения раздражают меня, потому что я хочу, чтобы они открывались на моем основном мониторе, и я перенесу их на свой дополнительный, если я хочу, чтобы они были там. однако эти приложения сделаны и находятся вне моего контроля, поэтому я хочу спросить о моих собственных приложениях, которые могут запускаться людьми, использующими два монитора.</p><p>какие виды элементов управления доступны, чтобы позволить людям указать, на каком мониторе открывается ваше приложение, позволить приложению «запомнить» монитор, на котором он находился, когда он был закрыт, и снова открыть его, а также заставить приложение запускаться на определенном мониторе. ?</p><p>я ищу решения для всех операционных систем и языков программирования, хотя я предполагаю, что разные ос и языки будут иметь разные элементы управления.</p><h1>смежные вопросы</h1><ul> <li> <a href="https://stackoverflow.com/questions/52755/what-determines-the-monitor-my-app-runs-on">что определяет монитор, на котором работает мое приложение?</a> этот вопрос обсуждает существующие приложения и как они решают, на каком мониторе работать. в настоящее время принятый ответ предоставляет функции windows, которые можно использовать для управления позиционированием приложения при запуске.</li> <li> <a href="https://stackoverflow.com/questions/206400/start-program-on-a-second-monitor">запустить программу на втором мониторе?</a> предоставляет некоторые решения delphi для принудительного запуска приложения на определенном мониторе.</li> </ul>

<p>как программист windows, я контролирую начальный монитор окон, созданный моими приложениями с помощью a. сохранение последней позиции моих приложений в реестре и ее восстановление, и b. нехватка хранимой информации, установка начальной позиции на значения магического флага, которые использует windows для позиционирования приложения, используя его логику по умолчанию. логика по умолчанию меняется с ос на ос, поскольку ms улучшает взаимодействие с пользователем, но, как правило, гарантирует, что приложение откроется на любом мониторе, на который пользователь, скорее всего, будет смотреть.</p><p>как пользователь с мультимониторной системой windows xp/vista, я бы использовал менеджер рабочего стола nvidia, который имеет возможность устанавливать начальные позиции для приложений, в противном случае он не имеет соответствующего поведения.</p>

<p>одна вещь, которую следует учитывать, - это то, что конфигурация монитора могла измениться между вызовами приложения (например, запуск на ноутбуке, который иногда может быть подключен к док-станции, и использование внешнего монитора). убедитесь, что ваше приложение находится в видимом диапазоне.</p><p>что касается api, существует класс system.windows.forms.screen, который предоставляет некоторую часть этой информации.</p>

<p>с точки зрения традиционного оконного менеджера unix и linux, вы не контролируете. менеджер окон управляет позиционированием окна.</p><p>возможно, вы сможете давать подсказки диспетчеру окон, но должна быть возможность настроить диспетчер окон, чтобы игнорировать такие вещи. перемещение или размещение окна из программы может легко причинить боль при использовании большого виртуального рабочего стола.</p><p>смотрите: <a href="http://standards.freedesktop.org/wm-spec/wm-spec-latest.html">http://standards.freedesktop.org/wm-spec/wm-spec-latest.html</a> </p>

<p>в kde 4.13.3 (возможно, в некоторых старых и новых версиях вы можете сделать это (перевод может быть неточным - я использую польскую версию):</p><ol> <li>запустить нужную программу</li> <li>щелкните правой кнопкой мыши по строке заголовка</li> <li>выберите «дополнительные действия» -> «дополнительные настройки окна ...» (еще больше параметров в разделе «дополнительные настройки программы ...»)</li> <li>перейти на вкладку «размер и макет»</li> <li>установите флажок «экран», выберите «принудительно» и выберите номер экрана. окно этой программы будет всегда открыто на этом экране.</li> </ol>