Frage Was bestimmt den Monitor, auf dem meine App ausgeführt wird?


Ich benutze Windows, und ich habe zwei Monitore.

Einige Anwendungen werden immer starte auf meinem primären Monitor, egal wo sie waren, als ich sie geschlossen habe.

Andere beginnen immer mit dem sekundär überwachen, egal wo sie waren, als ich sie geschlossen habe.

Gibt es irgendwo eine Registrierungseinstellung, die ich manipulieren kann, um zu steuern, in welche Monitoranwendungen standardmäßig gestartet wird?

@ rp: Ich habe Ultramon, und ich stimme zu, dass es unerlässlich ist, dass Microsoft es kaufen und in ihr Betriebssystem integrieren sollte. Aber wie Sie gesagt haben, können Sie nicht den Standardmonitor steuern, in den ein Programm startet.


75
2017-09-09 19:54


Ursprung


Antworten:


Richtig geschriebene Windows-Apps, die ihren Speicherort von "run to run" speichern möchten, speichern die Ergebnisse von GetWindowPlacement() bevor Sie herunterfahren, dann verwenden Sie SetWindowPlacement() beim Start, um ihre Position wiederherzustellen.

Häufig speichern Apps die Ergebnisse von GetWindowPlacement() in der Registrierung als REG_BINARY zur einfachen Verwendung.

Das WINDOWPLACEMENTRoute hat viele Vorteile gegenüber anderen Methoden:

  • Verarbeitet den Fall, in dem sich die Bildschirmauflösung seit dem letzten Lauf geändert hat: SetWindowPlacement() stellt automatisch sicher, dass das Fenster nicht vollständig außerhalb des Bildschirms ist
  • Speichert den Status (minimiert / maximiert), speichert aber auch die wiederhergestellte (normale) Größe und Position
  • Verarbeitet Desktop-Metriken korrekt, gleicht die Position der Taskleiste usw. aus (dh verwendet "Koordinaten des Arbeitsbereichs" anstelle von "Bildschirmkoordinaten") - Techniken, die Bildschirmkoordinaten speichern, können unter dem Problem "Gehendes Fenster" leiden, wenn immer ein Fenster angezeigt wird ein wenig niedriger jedes Mal, wenn der Benutzer eine Symbolleiste am oberen Rand des Bildschirms hat).

Schließlich berücksichtigen Programme, die die Fensterwiederherstellung richtig behandeln, das nCmdShow Parameter, der von der Shell übergeben wird. Dieser Parameter wird in der Verknüpfung festgelegt, die die Anwendung startet (Normal, Minimiert, Maximiert):

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

Für Nicht-Win32-Anwendungen ist es wichtig, sicherzustellen, dass die Methode, die Sie zum Speichern / Wiederherstellen der Fensterposition verwenden, letztendlich den gleichen zugrunde liegenden Aufruf verwendet (andernfalls wie Java Swing) setBounds()/getBounds() Problem) Sie werden am Ende eine Menge zusätzlichen Code schreiben, um Funktionen wieder zu implementieren, die bereits in der WINDOWPLACEMENT Funktionen.


41
2017-09-09 23:56



Hier ist, was ich gefunden habe. Wenn Sie möchten, dass eine App standardmäßig auf Ihrem sekundären Monitor geöffnet wird, gehen Sie folgendermaßen vor:

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.

Die Anwendung wird nun standardmäßig auf diesem Monitor geöffnet. Wenn Sie es zu einem anderen Monitor ändern möchten, führen Sie die Schritte 1 bis 6 erneut aus.


55
2018-02-04 15:05



Holen Sie sich UltraMon. Schnell.

http://realtimesoft.com/ultramon/ 

Sie können nicht angeben, auf welchem ​​Monitor eine App gestartet werden soll. Sie können jedoch eine App auf den anderen Monitor verschieben und das Seitenverhältnis mit einem Mausklick beibehalten. Es ist ein sehr nützliches Dienstprogramm.

Die meisten Programme beginnen dort, wo Sie sie zuletzt verlassen haben. Wenn Sie also zwei Monitore bei der Arbeit haben, aber nur einen zu Hause, ist es möglich, Ihren Laptop zu Hause zu starten und nicht zu sehen, dass die Apps auf dem anderen Monitor laufen (der jetzt nicht vorhanden ist). Mit UltrMon können Sie diese verwaisten Apps schnell und einfach auf den Hauptbildschirm zurücksetzen.


10
2017-09-09 20:11



Es ist nicht genau die Antwort auf diese Frage, aber ich habe dieses Problem mit der Shift + Win + [left,right] arrow keys Abkürzung. Sie können damit das aktuell aktive Fenster auf einen anderen Monitor verschieben.


9
2017-09-18 09:42



Ich bin ziemlich sicher, dass der primäre Monitor der Standard ist. Wenn die App anständig codiert wurde, wird sie, wenn sie geschlossen ist, sich daran erinnern, wo sie zuletzt war und sich dort wieder öffnen wird, aber - wie Sie bemerkt haben - kein Standardverhalten.

EDIT: Die Art, wie ich es normalerweise mache, ist, den Standort in den App-Einstellungen gespeichert zu haben. Wenn kein Wert für sie angegeben wird, wird standardmäßig die Mitte des Bildschirms angezeigt. Beim Schließen des Formulars zeichnet es seine Position auf. Auf diese Weise ist es immer dort, wo es zuletzt war. Ich kenne keine einfache Möglichkeit, es dem ersten Monitor automatisch zu überlassen.

- Kevin Fairchild


4
2017-09-09 20:04



Wichtiger Hinweis: Wenn Sie sich an die Position Ihrer Anwendung erinnern und die Anwendung herunterfahren und dann an dieser Position erneut starten, beachten Sie, dass sich die Monitorkonfiguration des Benutzers möglicherweise geändert hat, während Ihre Anwendung geschlossen wurde.

Laptop-Benutzer ändern beispielsweise häufig ihre Anzeigekonfiguration. Wenn angedockt, kann ein zweiter Monitor vorhanden sein, der beim Abdocken verschwindet. Wenn der Benutzer eine Anwendung schließt, die auf dem zweiten Monitor ausgeführt wurde, und die Anwendung erneut öffnet, wenn der Monitor nicht verbunden ist, wird das Fenster bei der Wiederherstellung der vorherigen Koordinaten vollständig ausgeblendet.

Um herauszufinden, wie groß das Display wirklich ist, schauen Sie sich GetSystemMetrics an.


3
2017-09-16 15:55



Also ich hatte dieses Problem mit Adobe Reader 9.0. Irgendwie hat das Programm vergessen auf meinem rechten Monitor zu öffnen und hat sich ständig auf meinem linken Monitor geöffnet. Die meisten Programme erlauben es, sie zu ziehen, den Bildschirm zu maximieren und dann zu schließen und es wird sich merken. Nun, mit Adobe musste ich es ziehen und dann schließen, bevor es maximiert wurde, damit Windows sich daran erinnert, auf welchem ​​Bildschirm es das nächste Mal öffnen würde. Sobald Sie es auf den richtigen Monitor eingestellt haben, können Sie es maximieren. Ich denke, das ist dumm, da sich fast alle Windows-Programme automatisch daran erinnern, ohne einen Weg für XP zu finden.


2
2018-03-31 20:27



Ich stimme zu, dass es einige Apps gibt, die Sie so konfigurieren können, dass sie auf einem Bildschirm geöffnet werden, indem Sie den Bildschirm maximieren oder mit der rechten Maustaste klicken und verschieben / skalieren, dann schließen und erneut öffnen. Es gibt jedoch andere, die nur auf dem Hauptbildschirm geöffnet werden.

Was ich getan habe, um dies zu beheben: Stellen Sie den Monitor so ein, dass störrische Apps als Monitor 1 und der andere Monitor als 2 angezeigt werden sollen. Ändern Sie dann Monitor 2 als primären Monitor - also bleiben Ihre Desktop-Einstellungen und die Startleiste erhalten. Hoffe das hilft.


1
2018-06-07 18:17



Halte mich nicht daran fest, aber ich bin mir ziemlich sicher, dass es von der Anwendung selbst abhängt. Ich weiß, dass viele immer auf dem Hauptmonitor geöffnet sind, einige werden wieder auf demselben Monitor geöffnet, auf dem sie zuvor ausgeführt wurden, und einige können Sie einstellen. Ich weiß zum Beispiel, dass ich Shortcuts habe, um Befehlsfenster für bestimmte Verzeichnisse zu öffnen, und jede hat eine Option in ihren Eigenschaften zu dem Ort, an dem das Fenster geöffnet wird. Während Outlook sich gerade erst erinnert und öffnet, war es geöffnet. Dann andere Apps Öffnen Sie in welchem ​​Fenster auch immer der aktuelle Fokus liegt.

Ich bin mir also nicht sicher, ob es eine Möglichkeit gibt, jedem Programm zu sagen, wo es geöffnet werden soll. Hoffe das hilft manchen.


0
2017-09-09 20:05