173 votes

Afficher une fenêtre contextuelle/une boîte de message à partir d'un fichier batch Windows

Existe-t-il un moyen d'afficher une boîte de message à partir d'un fichier batch (similaire à la manière dont les xmessage peut être utilisé à partir de scripts de base sous Linux) ?

0 votes

CMD.EXE, c'est un processeur de commande 32 bits qui prend en charge les commandes DOS.

7 votes

Il s'agit de l'Invite de commande Windows.

6voto

MoE bis Points 79
msg * /time:0 /w Hello everybody!

Ce message attend indéfiniment que l'on clique sur OK (il ne dure qu'une minute par défaut) et fonctionne parfaitement sous Windows 8.1.

0 votes

La même réponse est présente depuis 2009

0 votes

Oups >_< Veuillez le supprimer :)

0 votes

?comment insérer une nouvelle ligne (ligne blanche) dans le texte ?

4voto

Macke Points 13474

Pour ce faire, vous devez disposer d'un petit programme qui affiche une boîte de messages et l'exécuter à partir de votre fichier batch.

Vous pouvez cependant ouvrir une fenêtre de console qui affiche une invite, mais obtenir une boîte de message GUI en utilisant cmd.exe et ses amis seulement n'est pas possible, AFAIK.

0 votes

Une invite pourrait le faire... avez-vous plus d'informations à ce sujet ?

1 votes

Echo "xx", pause, ou set /p var=prompt sont des options de cmd.exe

4voto

Rafi Points 530

En suivant la réponse de @Fowl, vous pouvez l'améliorer avec un timeout pour qu'il n'apparaisse que pendant 10 secondes en utilisant ce qui suit :

mshta "javascript:var sh=new ActiveXObject( 'WScript.Shell' ); sh.Popup( 'Message!', 10, 'Title!', 64 );close()"

Ver aquí pour plus de détails.

0 votes

Détecté comme un virus xD

3voto

Entropy Points 21

Vous pouvez invoquer la fonction de la dll depuis user32.dll, je pense. Quelque chose comme

Rundll32.exe user32.dll, MessageBox (0, "text", "titleText", {extra flags for like topmost messagebox e.t.c})

Je le tape depuis mon téléphone, ne me jugez pas... sinon j'aurais lié les drapeaux supplémentaires.

0 votes

Je peux obtenir rundll32.exe user32.dll,MessageBoxA X pour afficher une boîte de message avec X comme titre lorsque je le fais dans la boîte d'exécution. Quelle que soit la valeur de X, je n'arrive pas à l'interpréter comme un paramètre multiple - tout va dans le titre. Donc rundll32.exe user32.dll,MessageBoxA (0, "MyTitle", "MyText", 0) affiche une boîte de message dont le titre est (0, "MyTitle", "MyText", 0) Mais je n'arrive pas du tout à le faire fonctionner à partir de la ligne de commande - seulement à partir de la boîte d'exécution. Sur la ligne de commande, il ne fait rien du tout. Est-ce que cela fonctionne à coup sûr à partir d'une ligne de commande ou d'un fichier batch ou seulement à partir de la boîte d'exécution ?

0 votes

Rundll32.exe selon doc ne peut exécuter que les procédures qui ont été spécifiquement conçues dans ce but, car elles doivent analyser la partie "arguments facultatifs". Les fonctions MessageBox-ish n'ont pas été conçues de cette façon. Pourquoi cela fonctionne via Win+R (Run box), c'est encore une grande question !

2voto

zhongshu Points 1861

J'utilise un utilitaire nommé msgbox.exe d'ici : http://www.paulsadowski.com/WSH/cmdprogs.htm

0 votes

Selon l'antivirus Symantec, cette archive contient un cheval de Troie.

3 votes

David - J'ai eu des fichiers batch et texte signalés comme hostiles par des antivirus. En fait, il m'est arrivé que l'antivirus AVG attrape une instruction en ligne de commande et déclare que c'était un virus.

2 votes

FWIW Virus Total dit que 11/51 contrôleurs de virus détectent des virus sur ce fichier : virustotal.com/fr/file/

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