2

Я знаю, что в Windows 7 есть некоторые встроенные функции, которые управляют открытием приложения на определенном мониторе. Это прекрасно работает при работе только с двумя мониторами. Откройте Chrome на мониторе 1, перетащите его на монитор 2, закройте Chrome, откройте Chrome, и он откроется на мониторе 2.

Моя проблема в том, что у меня есть 4 программы, работающие на дисплее монитора Quad Monitor, и мои результаты довольно смешаны с Windows 7, помня, какая из них идет куда.

Есть риск задать вопрос "за покупками", есть ли сторонняя утилита, которая лучше справляется с этой конкретной задачей?

Мне нужно иметь возможность перезагрузить компьютер и мои 4 приложения, чтобы они всегда запускались в одном и том же месте без какого-либо взаимодействия с пользователем. Прямо сейчас мое тестирование работает примерно в 7/10 раз больше, чем хотелось бы. Это было бы приемлемо, если бы не было объекта клиента.

В данный момент я могу написать единственное другое решение - написать консольное приложение для запуска процессов, но я не совсем уверен, поддерживает ли оно смещение координат x/y в перегрузках process.start.

Спасибо за прочтение.

2 ответа2

2

Это может быть связано с порядком включения устройств. Обязательно включите все экраны до запуска компьютера. Если некоторые экраны включаются после загрузки Windows, Windows может сбросить расположение по умолчанию, где каждое приложение должно начинаться, чтобы быть уверенным, что оно не начинается за пределами. Если вы хотите быть уверены, что приложения всегда запускаются на нужном экране, лучше всего сделать для него панель запуска, но тогда все экраны должны быть включены.

0

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

sFileName - это имя процесса, который извлекается из базы данных.

свойства me.xcoord и me.ycoord рассчитываются исходя из того, какой процесс sFileName запущен.

 Dim myExe As New Process
 myExe.StartInfo.FileName = String.Format("{0}{1}{2}", My.Settings.programsdirectory, sFileName, My.Settings.buildextension)
 myExe.StartInfo.UseShellExecute = True
 myExe.StartInfo.Arguments = String.Format("{0} {1}", Me.XCOORD, Me.YCOORD)
 Try
     Process.Start(myExe.StartInfo.FileName, myExe.StartInfo.Arguments)
 Catch ex As Exception
     ApplicationInfo.ExceptionHandler(ex)
 End Try

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