50 votes

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

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

Y a-t-il un moyen de faire cela via l'invite de commande ? Un autre moyen ?

2 votes

Windows ? Linux ? Environnement de bureau ? Un langage ? Avez-vous les sources du programme ? Veuillez être plus précis.

0 votes

Bonjour Anton, j'utilise Windows. Non je n'ai pas la source, j'ai un créateur d'animation, sa sortie est exe, mais je ne peux pas régler la position de la fenêtre pour la sortie exe et elle s'ouvre toujours à la position 0x0.

1 votes

La réponse de @Sorpigal peut vous aider. Vous pouvez créer un fichier batch qui lancera l'exécutable et déplacera sa fenêtre avec le bouton cmdow .

34voto

Sorpigal Points 10412

Vous aurez besoin d'un utilitaire supplémentaire tel que cmdow.exe pour y parvenir. Regardez spécifiquement le /mov interrupteur. Vous pouvez soit lancer votre programme à partir de cmdow ou l'exécuter séparément et ensuite invoquer cmdow pour le déplacer/le redimensionner comme vous le souhaitez.

0 votes

Merci pour la réponse, mais pouvez-vous me donner le code pour déplacer mon application au centre du bureau ?

1 votes

Vous devrez vous faire votre propre opinion à ce sujet. Si vous ne voulez pas utiliser un utilitaire, vous devrez écrire un programme qui utilise MoveWindow().

0 votes

Pouvez-vous donner un exemple ? Je ne vois pas comment utiliser cmdow avec /mov.

30voto

FuzzyWuzzy Points 635

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

Voici un exemple de script. Appelez-le bloc-notes.ahk puis exécutez-le depuis 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émarre une application (le bloc-notes), puis ajuste la taille de la fenêtre de manière à ce qu'elle soit centrée dans la fenêtre avec une bordure de 10 pixels sur tous les côtés.

0 votes

Bonjour Fuzzy, Merci pour la réponse, Que voulez-vous dire par "il est centré dans la fenêtre avec une bordure de 10 pixels sur tous les côtés". Ce code ouvre-t-il mon application au centre de la fenêtre sur tous les ordinateurs ayant une résolution différente ?

0 votes

Jetez un coup d'œil à la WinMove doc. Les paramètres X et Y prennent la valeur 10, et la largeur et la hauteur prennent les valeurs suivantes : taille de l'écran moins 20. Cela dépend donc de l'espace que vous souhaitez avoir autour de la fenêtre. Si vous voulez maximiser la fenêtre, utilisez plutôt la fonction WinMaximize fonction.

0 votes

@FuzzyWuzzy Excellente solution ! En utilisant AutoHotKey, j'ai créé un script qui ouvre quatre instances de Emulateur VBALink (pour netplay), redimensionner toutes les fenêtres afin que chacune d'entre elles occupe 1/4 du bureau, et positionner chaque fenêtre dans un coin différent de mon écran (en haut à gauche, en haut à droite, en bas à gauche et en bas à droite). Ça a marché comme sur des roulettes !

26voto

Bill K Points 32115

Je viens de trouver cette question alors que je cherchais à faire la même chose.

Après quelques expériences, j'ai trouvé une réponse qui fonctionne comme le souhaite le PO et qui est simple comme bonjour, mais pas très générale.

Créez un raccourci sur votre bureau ou ailleurs (vous pouvez utiliser l'assistant de création de raccourci dans le menu de clic droit), configurez-le pour exécuter le programme "cmd.exe" et exécutez-le. Lorsque la fenêtre s'ouvre, positionnez-la à l'endroit où vous voulez que votre fenêtre soit. Pour enregistrer cette position, faites apparaître le menu des propriétés et cliquez sur "Enregistrer".

Maintenant, si vous le souhaitez, vous pouvez également définir d'autres propriétés comme les couleurs et je vous recommande vivement de modifier 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 ce ne sont pas les valeurs par défaut !?!).

Maintenant vous avez un raccourci qui va fonctionner. Faites-en un pour chaque fenêtre CMD que vous voulez ouvrir à un endroit différent.

Maintenant pour l'astuce, la commande Windows CMD START peut exécuter des raccourcis. Vous ne pouvez pas repositionner programmatiquement la fenêtre avant son lancement, mais au moins elle apparaît là où vous voulez et vous pouvez la lancer (ainsi que d'autres) à partir d'un fichier batch 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 vous permettra d'ouvrir toutes vos fenêtres de commande à vos positions préférées et de définir individuellement les propriétés telles que la couleur de premier plan, la couleur d'arrière-plan, la police, le mode administrateur, le mode édition rapide, etc... en un seul clic. Maintenant, déplacez ce seul "lien" dans votre dossier de démarrage et vous avez une restauration automatique sans aucun programme externe.

Il s'agit d'une solution assez simple. Elle n'est pas d'application générale, mais je pense qu'elle résoudra le problème que la plupart des personnes lisant cette question tentent de résoudre.

Je l'ai fait récemment et je vais donc poster 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 originale cmd /c est exécutée en élévation, alors chacun de vos Windows peut (si l'élévation a été sélectionnée) démarrer en élévation sans vous le redemander individuellement. C'est très pratique car je lance 3 fenêtres cmd et 3 autres applications toutes en élévation à chaque fois que je démarre mon ordinateur.

4voto

GCD56 Points 33

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

Il suffit d'ouvrir la fenêtre où vous le souhaitez, faites un clic droit et choisissez les propriétés. sélectionnez Layout décochez "laisser le système positionner la fenêtre". et cliquez sur OK.

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

4voto

user1167442 Points 676

Cela devrait probablement être un commentaire sous la rubrique cmdow.exe mais voici un simple fichier batch que j'ai écrit pour permettre un contrôle assez sophistiqué et simple de tous les Windows 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 la 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 des actions multiples sur une seule commande, mais je n'ai pas encore essayé.

Pour que ça marche, cmdow.exe doit être situé dans votre chemin. Attention, lorsque vous le téléchargez, votre programme AV peut vous crier dessus. Cet outil a ( Je suppose ) ont été utilisés par le passé par les auteurs de logiciels malveillants pour manipuler Windows. Il n'est pas dangereux en soi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X