Я работаю с четырьмя мониторами с двумя видеокартами Nvidia с двумя выходами. Различное программное обеспечение иногда всплывает диалоговые окна с вопросами или сообщениями. Мне бы хотелось, чтобы диалоговые окна всегда появлялись на том же мониторе, что и главное окно программы, но это не так. Можно ли как-то сказать системе, в каком мониторе она должна размещать диалоговые окна?
5 ответов
По моему опыту, это варьируется в зависимости от приложения. Некоторые делают системные вызовы, чтобы диалоговые окна всегда появлялись на "основном" или "основном" мониторе. Другие откроются там, где они были уволены в последний раз. Третьи будут следить за приложением и открывать его на мониторе. Несовместимость выходит за рамки разочарований, и я уже несколько десятилетий использую системы с несколькими мониторами XP, и я могу сказать, что не нашел способа объединить их. Подобные несоответствия были одной из многих причин, по которым я перешел на Mac.
есть VBS скрипт найден здесь называется "PositionDialogs". Вы запускаете его при запуске системы, и он переместит любой впоследствии открытый диалог на монитор, на котором запущена родительская программа.
У меня есть мультимониторная карта AMD FirePro. Эта карта поддерживает AMD HydraVision, которая включает в себя Desktop Manager. Одна из доступных опций - «Сохранить позицию и размер приложения», а также есть опция «Включить перестановку диалогов», которую можно установить на «Показать на предпочтительном дисплее X» или «Показать на дисплее приложения».
Просто чтобы дополнить ответ @ peelman:
Для поддержки нескольких мониторов в программе - вам нужно вызвать EnumDisplayMonitors
и предоставить функцию обратного вызова для каждого монитора. (В win32 api, кстати ...)
См. Http://msdn.microsoft.com/en-us/library/dd162610%28VS.85%29.aspx для получения подробной информации.
У меня была такая же проблема на работе в системе Windows XP. Обходной путь, который я нашел, использовал язык сценариев под названием AutoIt. Есть библиотека для работы с несколькими мониторами. Вы можете использовать libray для указания монитора и автоматического центрирования окна на нем на основе определенных критериев (например, заголовок окна или имя процесса). Вы также можете использовать встроенные функции для указания точных координат, если хотите.
Основой этого является то, что вам нужен фоновый скрипт, который следит за конкретными окнами и перемещает их, когда они появляются. Если вы хотите больше подробностей, я могу предоставить общий скелет с некоторыми примерами опций.