web-dev-qa-db-fra.com

Définir la position de la fenêtre d'une application via la ligne de commande

J'ai une application qui démarre en position 0x0 de mon bureau. Je veux l'ouvrir au centre de mon bureau. Je ne veux pas l'ouvrir et utiliser une commande de déplacement pour le déplacer au centre, je veux juste que mon application démarre immédiatement en position centrale.

Existe-t-il un moyen de le faire via l'invite de commande? De toute autre manière?

34
Inside Man

Vous aurez besoin d'un utilitaire supplémentaire tel que cmdow.exe pour accomplir cela. Regardez spécifiquement le /mov commutateur. Vous pouvez soit lancer votre programme à partir de cmdow, soit l'exécuter séparément, puis appeler cmdow pour le déplacer/le redimensionner comme vous le souhaitez.

24
Sorpigal

J'ai trouvé que AutoHotKey est très bon pour les tâches de positionnement de fenêtre.

Voici un exemple de script. Appelez-le notepad.ahk puis exécutez-le à partir de la ligne de commande ou double-cliquez dessus.

Run, notepad.exe
WinWait, ahk_class Notepad
WinActivate
WinMove A,, 10, 10, A_ScreenWidth-20, A_ScreenHeight-20

Il démarrera une application (bloc-notes), puis ajustera la taille de la fenêtre afin qu'elle soit centrée dans la fenêtre avec une bordure de 10 pixels sur tous les côtés.

25
FuzzyWuzzy

Je viens de trouver cette question lors d'une quête pour faire la même chose.

Après quelques expérimentations, je suis tombé sur une réponse qui fonctionne comme l'OQ le souhaiterait et qui est aussi simple que diable, mais pas très générale.

Créez un raccourci sur votre bureau ou ailleurs (vous pouvez utiliser l'aide à la création de raccourcis dans le menu contextuel), définissez-le pour exécuter le programme "cmd.exe" et exécutez-le. Lorsque la fenêtre s'ouvre, placez-la là où vous voulez que votre fenêtre se trouve. Pour enregistrer cette position, ouvrez le menu des propriétés et appuyez sur "Enregistrer".

Maintenant, si vous le souhaitez, vous pouvez également définir d'autres propriétés comme les couleurs et je recommande fortement de changer le tampon pour qu'il ait une largeur de 120-240 et une hauteur de 9999 et d'activer le mode d'édition rapide (pourquoi ne sont-ce pas les valeurs par défaut!?!)

Vous disposez maintenant d'un raccourci qui fonctionnera. Créez-en une pour chaque fenêtre CMD que vous souhaitez ouvrir à un emplacement différent.

Maintenant, pour l'astuce, la commande Windows CMD START peut exécuter des raccourcis. Vous ne pouvez pas repositionner les fenêtres par programme avant le lancement, mais au moins, il apparaît où vous le souhaitez et vous pouvez le lancer (et d'autres) à partir d'un fichier de commandes ou d'un autre programme.

En utilisant un raccourci avec cmd/c, vous pouvez créer un raccourci qui peut lancer TOUS vos liens à la fois en utilisant une commande qui ressemble à ceci:

cmd /c "start cmd_link1 && start cmd_link2 && start cmd_link3"

Cela ouvrira toutes vos fenêtres de commandes à vos positions préférées et définira individuellement les propriétés comme la couleur de premier plan, la couleur d'arrière-plan, la police, le mode administrateur, le mode d'édition rapide, etc. en un seul clic. Déplacez maintenant ce "lien" dans votre dossier de démarrage et vous avez une restauration à état automatique sans aucun programme externe.

Il s'agit d'une solution assez simple. Ce n'est pas un objectif général, mais je crois que cela résoudra le problème que la plupart des gens qui lisent cette question essaient de résoudre.

Je l'ai fait récemment, je vais donc publier mon fichier cmd ici:

cd /d C:\shortucts
for %%f in (*.lnk *.rdp *.url) do start %%f
exit

EDIT tardif: Je n'ai pas mentionné que si la commande cmd/c d'origine est exécutée en élévation, alors chacune de vos fenêtres peut (si l'élévation a été sélectionnée) commencer en élévation sans vous inviter individuellement à nouveau. Cela a été très pratique car je démarre des fenêtres 3 cmd et 3 autres applications toutes surélevées à chaque démarrage de mon ordinateur.

18
Bill K

La réponse de Bill K. était la plus élégante si vous vouliez simplement ouvrir une fenêtre au démarrage ou partir d'un raccourci sur le bureau.

Ouvrez simplement la fenêtre où vous le souhaitez, faites un clic droit et choisissez les propriétés. sélectionnez Disposition décochez "laisser la fenêtre de position du système" et cliquez sur OK.

La fenêtre va maintenant s'ouvrir là où vous le souhaitez. Vous pouvez définir les couleurs de police et de fenêtre en même temps sur d'autres onglets. doux.

3
GCD56

Cela devrait probablement être un commentaire sous le cmdow.exe réponse, mais voici un simple fichier batch que j'ai écrit pour permettre un contrôle assez sophistiqué et simple sur toutes les fenêtres que vous pouvez voir dans la barre des tâches.

La première étape consiste à exécuter cmdow /t pour afficher une liste de ces fenêtres. Regardez le nom de l'image dans la colonne Image, puis en ligne de commande:

mycmdowscript.cmd imagename

Voici le contenu du fichier batch:

:: mycmdowscript.cmd

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

SET IMAGE=%1
SET ACTION=/%2
SET REST=1
SET PARAMS=

:: GET ANY ADDITIONAL PARAMS AND STORE THEM IN A VARIABLE

FOR %%I in (%*) DO (
   IF !REST! geq 3 (
      SET PARAMS=!PARAMS! %%I
   )
   SET /A REST+=1
)

FOR /F "USEBACKQ tokens=1,8" %%I IN (`CMDOW /t`) DO (
     IF %IMAGE%==%%J (

     :: you now have access to the handle in %%I
     cmdow %%I %ACTION% !PARAMS!

     )
)

ENDLOCAL
@echo on

EXIT /b

exemple d'utilisation

:: will set notepad to 500 500

mycmdowscript.cmd notepad siz 500 500

Vous pourriez probablement réécrire ceci pour permettre plusieurs actions sur une seule commande, mais je n'ai pas encore essayé.

Pour que cela fonctionne, cmdow.exe doit se trouver sur votre chemin. Attention, lorsque vous téléchargez ceci, votre programme AV peut vous crier dessus. Cet outil a ( je suppose ) dans le passé utilisé par les auteurs de logiciels malveillants pour manipuler les fenêtres. Ce n'est pas nocif en soi.

2
dgo

Si vous êtes heureux d'exécuter un fichier batch avec quelques petits programmes d'assistance, une solution complète est publiée ici:
Comment un fichier batch peut-il exécuter un programme et définir la position et la taille de la fenêtre? - Débordement de pile (demandé: 1er mai 2012)

1
user3260720

Grâce à FuzzyWuzzy , définissez le code suivant (exemple rapide et sale pour la résolution d'écran 1920x1080 - sans calcul automatique de la largeur et de la hauteur ou utilisation de la fonction, etc.) dans AutoHotKey pour réaliser ce qui suit: enter image description here

v_cmd = c:\temp\1st_Monitor.ps1
Run, Powershell.exe -executionpolicy remotesigned -File %v_cmd%
SetTitleMatchMode 2
SetTitleMatchMode Fast
WinWait, PowerShell
Sleep, 1000
    ;A = Active window - [x,y,width,height]
WinMove A,, 0, 0,1920,500

v_cmd = c:\temp\2nd_Monitor.ps1
Run, Powershell.exe -executionpolicy remotesigned -File %v_cmd%
WinWait, PowerShell
Sleep, 1000
    ;A = Active window - [x,y,width,height]
WinMove A,, 0, 500,960,400

v_cmd = c:\temp\3rd_Monitor.ps1
Run, Powershell.exe -executionpolicy remotesigned -File %v_cmd%
WinWait, PowerShell
Sleep, 1000
    ;A = Active window - [x,y,width,height]
WinMove A,, 960, 500,960,400
1
Etay Gudai