Qu’est-ce qui détermine le moniteur sur lequel mon application s’exécute?

J’utilise Windows et j’ai deux moniteurs.

Certaines applications démarreront toujours sur mon moniteur principal, peu importe où elles se trouvaient lorsque je les ai fermées.

D’autres démarreront toujours sur le moniteur secondaire , peu importe où ils se trouvaient lorsque je les ai fermés.

Existe-t-il un paramètre de registre quelque part, que je peux manipuler pour contrôler les applications de moniteur lancées par défaut?

@rp: J’ai Ultramon, et je reconnais que c’est indispensable, au point que Microsoft devrait l’acheter et l’intégrer dans son système d’exploitation. Mais comme vous l’avez dit, cela ne vous permet pas de contrôler le moniteur par défaut dans lequel un programme se lance.

Les applications Windows correctement écrites qui souhaitent enregistrer leur emplacement à partir de l’exécution enregistre les résultats de GetWindowPlacement() avant la fermeture, puis utilisent SetWindowPlacement() au démarrage pour restaurer leur position.

Les applications stockent souvent les résultats de GetWindowPlacement() dans le registre en tant que REG_BINARY pour une utilisation facile.

La route WINDOWPLACEMENT présente de nombreux avantages par rapport aux autres méthodes:

  • Gère le cas où la résolution d’écran a changé depuis la dernière exécution: SetWindowPlacement() s’assurera automatiquement que la fenêtre n’est pas entièrement hors écran
  • Enregistre l’état (minimisé / maximisé) mais enregistre également la taille et la position restaurées (normales)
  • Gère correctement les mésortingques de bureau, en compensant la position de la barre des tâches, etc. (utilise les “coordonnées de l’espace de travail” au lieu des “coordonnées de l’écran”). un peu plus bas chaque fois que l’utilisateur a une barre d’outils en haut de l’écran).

Enfin, les programmes qui gèrent correctement la restauration de la fenêtre prendront en compte le paramètre nCmdShow transmis depuis le shell. Ce paramètre est défini dans le raccourci qui lance l’application (Normal, Minimized, Maximize):

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

Pour les applications non-Win32, il est important de s’assurer que la méthode utilisée pour enregistrer / restaurer la position de la fenêtre utilise le même appel sous-jacent, sinon (comme le setBounds() / getBounds() Java Swing setBounds() écrire beaucoup de code supplémentaire pour WINDOWPLACEMENT fonctionnalités déjà présentes dans les fonctions WINDOWPLACEMENT .

Voici ce que j’ai trouvé. Si vous souhaitez qu’une application s’ouvre par défaut sur votre moniteur secondaire, procédez comme suit:

 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. 

L’application s’ouvrira maintenant sur ce moniteur par défaut. Si vous souhaitez le changer pour un autre moniteur, suivez simplement les étapes 1 à 6.

Obtenez UltraMon. Rapidement.

http://realtimesoft.com/ultramon/

Il ne vous permet pas de spécifier le type de moniteur sur lequel une application démarre, mais vous permet de déplacer une application sur un autre moniteur et de conserver ses proportions intactes en un clic de souris. C’est un utilitaire très pratique.

La plupart des programmes commenceront là où vous les avez quittés pour la dernière fois. Donc, si vous avez deux écrans au travail, mais un seul à la maison, il est possible de démarrer votre ordinateur portable à la maison et de ne pas voir les applications en cours d’exécution sur l’autre moniteur (ce qui n’est plus le cas actuellement). UltrMon vous permet également de déplacer ces applications orphelines sur l’écran principal rapidement et facilement.

Ce n’est pas exactement la réponse à cette question mais j’ai traité ce problème avec les Shift + Win + [left,right] arrow keys . Vous pouvez déplacer la fenêtre actuellement active sur un autre moniteur avec elle.

Je suis à peu près sûr que le moniteur principal est le moniteur par défaut. Si l’application a été codée décemment, quand elle est fermée, elle se souviendra où elle se trouvait et elle y sera rouverte, mais, comme vous l’avez remarqué, ce n’est pas un comportement par défaut.

EDIT: La façon dont je le fais habituellement est de stocker l’emplacement dans les parameters de l’application. En charge, s’il n’y a pas de valeur pour eux, le centre de l’écran est utilisé par défaut. À la fermeture du formulaire, il enregistre sa position. De cette façon, chaque fois qu’elle s’ouvre, c’est la dernière. Cependant, je ne connais pas un moyen simple de lui demander de se lancer automatiquement sur le second moniteur la première fois.

– Kevin Fairchild

Remarque importante: Si vous vous souvenez de la position de votre application et de son arrêt, puis redémarrez à cette position, gardez à l’esprit que la configuration du moniteur de l’utilisateur a peut-être changé pendant la fermeture de votre application.

Les utilisateurs de portables, par exemple, modifient fréquemment leur configuration d’affichage. Lorsqu’il est amarré, il peut y avoir un deuxième moniteur qui disparaît lorsqu’il est déconnecté. Si l’utilisateur ferme une application qui s’exécutait sur le deuxième moniteur et rouvre l’application lorsque le moniteur est déconnecté, restaurer la fenêtre aux coordonnées précédentes le laissera complètement hors écran.

Pour déterminer la taille réelle de l’affichage, consultez GetSystemMesortingcs.

J’ai donc eu ce problème avec Adobe Reader 9.0. D’une certaine manière, le programme a oublié d’ouvrir sur mon moniteur droit et s’ouvrait régulièrement sur mon moniteur gauche. La plupart des programmes vous permettent de le faire glisser, de maximiser l’écran, puis de le fermer. Eh bien, avec Adobe, je devais le faire glisser et le fermer avant de le maximiser, afin que Windows se souvienne de l’écran qui l’ouvrira la prochaine fois. Une fois que vous avez défini le bon moniteur, vous pouvez le maximiser. Je pense que c’est stupide, car presque tous les programmes Windows s’en souviennent automatiquement sans essayer de faire en sorte que XP s’en souvienne.

Je suis donc d’accord pour dire que certaines applications peuvent être configurées pour s’ouvrir sur un écran en maximisant ou en cliquant avec le bouton droit de la souris et en déplaçant / dimensionnant l’écran, puis en fermant et en rouvrant. Cependant, il y en a d’autres qui ne s’ouvriront que sur l’écran principal.

Ce que j’ai fait pour résoudre le problème: définissez le moniteur que vous préférez sur les applications les plus tenaces, en tant que moniteur 1 et votre autre moniteur en tant que 2, puis changez votre moniteur 2 pour qu’il devienne le principal. J’espère que cela t’aides.

Ne m’en tenez pas à cela, mais je suis sûr que cela dépend de l’application elle-même. Je sais que beaucoup de gens ouvrent toujours sur le moniteur principal, certains vont rouvrir le même moniteur que ceux sur lesquels ils étaient précédemment, et d’autres peuvent être configurés. Je sais par exemple que j’ai des raccourcis pour ouvrir des fenêtres de commandes à des répertoires particuliers, et que chacun a une option dans leurs propriétés pour ouvrir la fenêtre. Bien qu’Outlook se souvienne et s’ouvre dans le dernier écran dans lequel il était ouvert. ouvrir dans quelle que soit la fenêtre actuelle

Donc, je ne suis pas sûr qu’il y ait un moyen de dire à chaque programme où ouvrir. J’espère que ça aide certains.

J’ai remarqué que si je mets un raccourci sur mon bureau sur un écran, l’application lancée peut apparaître sur cet écran ( si cette application ne se repositionne pas).

Cela s’applique également à l’exécution de choses à partir de Windows Explorer – si Explorer est sur un écran, l’application lancée choisira ce moniteur à utiliser.

Encore une fois – je pense que c’est lorsque l’application de lancement spécifie la position par défaut (windows gérée). La plupart des applications semblent remplacer ce comportement par défaut.

Une simple fenêtre créée comme ça le fera:

hWnd = CreateWindow (windowClass, windowTitle, WS_VISIBLE | WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, SW_SHOW, CW_USEDEFAULT, 0, NULL, NULL, hInst, NULL);

Cliquez avec le bouton droit sur le raccourci et sélectionnez les propriétés. Assurez-vous d’être sur l’onglet “Raccourci”. Sélectionnez la liste déroulante Exécuter et changez-le en Maximisé.

Cela peut aider à lancer le programme en plein écran sur le moniteur principal.