Pregunta ¿Qué determina el monitor en el que mi aplicación se ejecuta?


Estoy usando Windows, y tengo dos monitores.

Algunas aplicaciones siempre comenzar en mi monitor primario, sin importar dónde estaban cuando los cerré.

Otros siempre comenzarán en el secundario monitorear, sin importar dónde estaban cuando los cerré.

¿Hay una configuración de registro enterrada en alguna parte, que puedo manipular para controlar qué aplicaciones de monitor se inician de forma predeterminada?

@rp: Tengo Ultramon, y estoy de acuerdo en que es indispensable, al punto que Microsoft debería comprarlo e incorporarlo en su sistema operativo. Pero como dijiste, no te permite controlar el monitor predeterminado en el que se inicia un programa.


75
2017-09-09 19:54


origen


Respuestas:


Las aplicaciones de Windows correctamente escritas que quieran guardar su ubicación de ejecución a ejecución guardarán los resultados de GetWindowPlacement() antes de apagar, luego use SetWindowPlacement() en el inicio para restaurar su posición.

Con frecuencia, las aplicaciones almacenarán los resultados de GetWindowPlacement() en el registro como un REG_BINARY para un uso fácil

los WINDOWPLACEMENTruta tiene muchas ventajas sobre otros métodos:

  • Maneja el caso donde la resolución de la pantalla cambió desde la última ejecución: SetWindowPlacement() se asegurará automáticamente de que la ventana no sea completamente fuera de pantalla
  • Guarda el estado (minimizado / maximizado) pero también guarda el tamaño y la posición restaurados (normales)
  • Maneja las métricas de escritorio correctamente, compensando la posición de la barra de tareas, etc. (es decir, usa "coordenadas de área de trabajo" en lugar de "coordenadas de pantalla"; las técnicas que dependen de guardar coordenadas de pantalla pueden sufrir el problema de "ventanas peatonales" donde siempre aparecerá una ventana un poco más bajo cada vez que el usuario tenga una barra de herramientas en la parte superior de la pantalla).

Finalmente, los programas que manejan correctamente la restauración de ventanas tendrán en cuenta el nCmdShow parámetro pasado desde el shell. Este parámetro se establece en el acceso directo que inicia la aplicación (Normal, Minimizado, Maximizar):

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

Para las aplicaciones que no son Win32, es importante asegurarse de que el método que está utilizando para guardar / restaurar la posición de la ventana eventualmente use la misma llamada subyacente, de lo contrario (como Java Swing's setBounds()/getBounds() problema) terminará escribiendo mucho código adicional para volver a implementar la funcionalidad que ya está allí en el WINDOWPLACEMENT funciones.


41
2017-09-09 23:56



Esto es lo que he encontrado. Si desea que una aplicación se abra en su monitor secundario de forma predeterminada, haga lo siguiente:

1. Open the application.
2. Re-size the window so that it is not maximized or minimized.
3. Move the window to the monitor you want it to open on by default.
4. Close the application.  Do not re-size prior to closing.
5. Open the application.
   It should open on the monitor you just moved it to and closed it on.
6. Maximize the window.

La aplicación ahora se abrirá en este monitor por defecto. Si desea cambiarlo a otro monitor, simplemente siga los pasos 1-6 nuevamente.


55
2018-02-04 15:05



Obtén UltraMon. Con rapidez.

http://realtimesoft.com/ultramon/ 

No le permite especificar en qué monitor se inicia una aplicación, pero le permite mover una aplicación al otro monitor y mantener intacta su relación de aspecto con un clic del mouse. Es una utilidad muy útil.

La mayoría de los programas comenzarán donde los dejó por última vez. Entonces, si tiene dos monitores en el trabajo, pero solo uno en casa, es posible iniciar su computadora portátil en el hogar y no ver las aplicaciones que se ejecutan en el otro monitor (que ahora no está allí). UltrMon también le permite mover esas aplicaciones huérfanas a la pantalla principal de forma rápida y fácil.


10
2017-09-09 20:11



No es exactamente la respuesta a esta pregunta, pero traté este problema con el Shift + Win + [left,right] arrow keys atajo. Puede mover la ventana actualmente activa a otro monitor con ella.


9
2017-09-18 09:42



Estoy bastante seguro de que el monitor principal es el predeterminado. Si la aplicación se codificó decentemente, cuando está cerrada, recordará dónde estaba por última vez y volverá a abrir allí, pero, como habrás notado, no es un comportamiento predeterminado.

EDITAR: La forma en que generalmente lo hago es tener la ubicación almacenada en la configuración de la aplicación. En carga, si no hay ningún valor para ellos, el valor predeterminado es el centro de la pantalla. Al cerrar el formulario, registra su posición. De esta forma, cada vez que se abre, está donde estaba por última vez. Sin embargo, no conozco una forma simple de decirle que se lance automáticamente al segundo monitor la primera vez.

- Kevin Fairchild


4
2017-09-09 20:04



Nota importante: si recuerda la posición de su aplicación y el apagado y luego vuelve a comenzar en esa posición, tenga en cuenta que la configuración del monitor del usuario puede haber cambiado mientras su aplicación estaba cerrada.

Los usuarios de computadoras portátiles, por ejemplo, frecuentemente cambian su configuración de visualización. Cuando está acoplado, puede haber un segundo monitor que desaparece cuando está desacoplado. Si el usuario cierra una aplicación que se estaba ejecutando en el segundo monitor y vuelve a abrir la aplicación cuando se desconecta el monitor, restaurar la ventana a las coordenadas anteriores lo dejará completamente fuera de la pantalla.

Para averiguar qué tan grande es realmente la pantalla, consulte GetSystemMetrics.


3
2017-09-16 15:55



Entonces tuve este problema con Adobe Reader 9.0. De alguna manera, el programa se olvidó de abrir en mi monitor derecho y se abrió constantemente en mi monitor izquierdo. La mayoría de los programas le permiten arrastrarlo, maximizar la pantalla, y luego cerrarlo y recordarlo. Bueno, con Adobe, tuve que arrastrarlo y luego cerrarlo antes de maximizarlo, para que Windows recuerde en qué pantalla abrirlo la próxima vez. Una vez que lo configura en el monitor correcto, puede maximizarlo. Creo que esto es estúpido, ya que casi todos los programas de Windows lo recuerdan de manera automática sin tratar de improvisar una forma de recordar XP.


2
2018-03-31 20:27



Así que estoy de acuerdo en que hay algunas aplicaciones que puede configurar para abrir en una pantalla maximizando o haciendo clic con el botón derecho y moviendo / dimensionando la pantalla, luego cierre y vuelva a abrir. Sin embargo, hay otros que solo se abrirán en la pantalla principal.

Lo que he hecho para resolver: configure el monitor que prefiere aplicaciones obstinadas para abrir, como monitor 1 y su otro monitor como 2, luego cambie su monitor 2 para que sea el principal, de modo que permanezcan la configuración de escritorio y la barra de inicio. Espero que esto ayude.


1
2018-06-07 18:17



No me detenga a esto, pero estoy bastante seguro de que depende de la aplicación en sí. Sé que muchos siempre se abren en el monitor principal, algunos volverán a abrirse en el mismo monitor en el que se ejecutaron anteriormente y otros se pueden configurar. Sé por ejemplo que tengo accesos directos para abrir ventanas de comandos a directorios particulares, y cada uno tiene una opción en sus propiedades para abrir la ventana. Mientras que Outlook simplemente recuerda y abre en la última pantalla, se abrió. Luego, otras aplicaciones abrir en cualquier ventana donde esté el enfoque actual.

Así que no estoy seguro de que haya una manera de decirle a cada programa dónde abrir. Espero que ayude a algunos.


0
2017-09-09 20:05