Comment faire pour modifier l'invite de commande (console) titre de la fenêtre de ligne de commande Java application?
Comment modifier et de mettre à jour le titre de la fenêtre d'invite de commande à partir de la ligne de commande java application? Chaque fois que je lance mon application, la fenêtre d'invite de commande titre indique:
C:\WINDOWS\system32\cmd.exe - java MyApp
.
J'aimerais changer et de mettre à jour le titre de la fenêtre que le programme java s'exécute, par exemple, comme wget(win32) mises à jour de l'état du téléchargement dans le titre: Wget [12%]
.
OriginalL'auteur evaldaz | 2009-06-15
Vous devez vous connecter pour publier un commentaire.
Bien que je n'ai pas essayé moi-même, dans Windows, on peut utiliser l'API Win32 appel à
SetConsoleTitle
afin de changer le titre de la console.Cependant, puisque c'est un appel à une bibliothèque native, il faudra l'utiliser de quelque chose comme Java Native Interface (JNI) en ordre à faire l'appel, et cela ne fonctionne que sur Windows 2000 et versions ultérieures.
Modifier - Une solution en utilisant JNI
L'exemple suivant est un exemple de l'utilisation de JNI afin de modifier le titre de la fenêtre de la console de Java dans Windows. Pour ce faire, le prerequiste certaines connaissances en C et en utilisant le compilateur/linker.
Tout d'abord, voici le résultat:
La modification de la console de titre à partir d'une application Java http://coobird.net/img/jni-change-console-title.png
Avertissement: Ceci est ma première application Java en utilisant JNI, donc c'est probablement ne va pas être un bon exemple de la façon de l'utiliser, je n'effectue pas de vérification des erreurs, et j'ai peut-être manqué quelques détails.
Le programme Java a été la suivante:
Fondamentalement, le titre est changé toutes les 5 secondes par l'appel de la
setTitle
méthode native externe dans une bibliothèque native appeléeChangeTitle
.Une fois le code ci-dessus est élaboré de façon à faire un
ChangeTitle.class
fichier, lajavah
commande est utilisée pour créer un en-tête C qui est utilisé lors de la création de la bibliothèque C.De l'écriture de la bibliothèque native
De l'écriture de la bibliothèque d'écriture du code source C contre le C fichier d'en-tête généré par
javah
.La
ChangeTitle.h
en-tête est le suivant:Maintenant, la mise en œuvre,
ChangeTitle.c
:Un
String
qui est passée dans la fonction native est modifié en UTF-8 C de la chaîne, qui est envoyé à laSetConsoleTitle
function, qui, comme le nom de la fonction l'indique, change le titre de la console.(Note: Il peut y avoir quelques problèmes avec juste de passage dans la chaîne dans le
SetConsoleTitle
fonction, mais selon la documentation, il accepte Unicode. Je ne suis pas trop sûr de savoir comment bien le code ci-dessus va travailler lors de l'envoi de chaînes différentes.)Ci-dessus est essentiellement une combinaison de code de l'échantillon obtenu à partir de Section 3.2: Accès Aux Chaînes de L'Interface Native Java Guide du Programmeur et de Spécification, et la
SetConsoleTitle
Function page à partir de MSDN.Pour plus d'implication des exemples de code avec vérification des erreurs, veuillez consulter le Section 3.2: Accès Aux Chaînes et
SetConsoleTitle
Function pages.Création de la DLL
La partie qui s'est avéré prendre le plus de temps pour moi à comprendre a été l'obtention de la C des fichiers à compiler dans une DLL qui en fait pourrait être lu sans provoquer une
UnsatisfiedLinkError
.Après beaucoup de recherche et d'essayer des choses, j'ai été en mesure d'obtenir le code source en C pour compiler une DLL, qui pourrait être appelée à partir de Java. Depuis que je suis en utilisant MinGW, j'ai trouvé une page de formulaire
mingw.org
qui décrit exactement comment créer une DLL pour JNI.Sources:
OriginalL'auteur coobird
Cela dépend de votre émulateur de terminal, mais essentiellement, c'est juste l'impression de séquences de contrôle de la console.
Maintenant, je ne suis pas clair sur ce que les séquences de contrôle CMD.EXE répond (je n'ai pas à essayer sur) mais j'ai entendu dire il y a une commande appelée TITRE qui définit le titre de la fenêtre. J'ai essayé de tuyauterie TITRE de la sortie vers un fichier, mais apparemment, il ne fait pas mettre le titre en éditant des caractères de contrôle. La commande de DÉMARRAGE peut prendre un paramètre qui est le titre de la fenêtre de suivi de la commande à exécuter dans la fenêtre. Donc, quelque chose comme
Personnellement, je viens de regrouper le tout avec un raccourci où vous pouvez modifier les propriétés telles que le répertoire courant, la commande, les paramètres et la taille de la fenêtre, le style et le titre (si je me souviens bien). Donner une belle icône et les gens vont l'utiliser.
Il veut le titre de changer à mesure que le programme s'exécute, et pas seulement lors du démarrage de l'application Java à partir de l'interface de ligne de commande.
Ouais je sais, donc, je disais à quelqu'un de trouver la séquence d'échappement pour le changement de titre dans cmd (qui doit exister mais je ne le trouve pas, même en ANSI.SYS), ou le demandeur peut utiliser Java.lang.d'exécution à exec le titre de commande lorsque cela est nécessaire. Si cela fonctionne sur la même fenêtre.
Malheureusement, à l'aide d'Exécution.exec avec "titre" ne fonctionne pas -- au moins de ce que j'ai essayé, je n'ai pas réussi à le faire fonctionner. Je soupçonne que c'est parce que de l'Exécution.exec va démarrer un nouveau processus distinct de l'actuel processus en cours d'exécution java.exe.
Exactement. Moment de l'exécution.exec engendre de nouveaux processus. Et oui, je cherchais une solution pour mettre à jour le titre à la volée.
OriginalL'auteur dlamblin
Voici ma solution à l'aide JNA:
OriginalL'auteur user341477
suivantes dlamblin de la révélation 😉
voici un code python.
notez qu'il y a 2 commandes différentes dans la plupart des langages de programmation:
système émettra un système de commande, exec, en effet, donne naissance à un nouveau processus. donc:
qui fonctionne à l'intérieur d'un programme en cours d'exécution. Il suffit de trouver la java équivalent.
Downvoting parce que cela ne vient même pas près de répondre au "comment puis-je changer le titre de la fenêtre JAVA?"
OriginalL'auteur Berry Tsakala