Executer une commande cmd depuis visual basic express

Bonjour,

Je possede un serveur minecraft bukkit et je veut faire un programme avec visual basic express qui me permet d' executer la commende /reload dans la console du serveur.

Merci d' avannce

6 réponses

Résumé de la discussion

Le fil aborde comment créer un programme Visual Basic Express pour exécuter la commande /reload dans la console d'un serveur Minecraft Bukkit à partir d'une interface VB.NET. Des réponses proposent d'utiliser Process avec UseShellExecute = False et RedirectStandardInput, puis écrire /reload via StreamWriter, ou d'exécuter le serveur avec un fichier exécutable et passer les paramètres. Plusieurs réponses soulignent que le serveur doit être lancé par le programme pour que la commande soit envoyée, et que certaines méthodes fonctionnent mieux sur Windows, tandis que lancer un .bat peut être problématique. En pratique, les échanges évoquent des erreurs comme 'myProcess n'est pas déclaré' lors des tentatives, ce qui suggère de déclarer correctement les objets Process et StreamWriter.

Bobot (l’IA à votre service)
  1. Tu as des exemples à la fin de la page.
     Dim myProcess As New Process()
    myProcess.StartInfo.UseShellExecute = False
    myProcess.StartInfo.FileName = "Ton exe, bat ou autre fichier"
    myProcess.StartInfo.CreateNoWindow = True
    myProcess.Start()
    3
    1. Contributeur
      'lut, tu dis "Je possede un serveur minecraft bukkit", c'est un serveur perso ou dédié? Si c'est du dédié, encore faut-il que tu puisse lancer des scripts et que ce dernier tourne sous Windows, ce qui n'est généralement pas le cas pour les serveurs.
      Une fois qu'on est surs qu'on peut lancer des programmes VB.NET, alors on peut passer au technique...
      Pour taper une commande dans la console du serveur, il faut que le serveur lui-même soit lancé par ton programme, pour qu'il puisse marquer "/reload" dans le flux d'entrée standard.
      Et pour que ça se fasse, il faut utiliser
      myProcess.StartInfo.UseShellExecute = False
      myProcess.StartInfo.RedirectStandardInput = True
      StreamWriter myStreamWriter = myProcess.StandardInput
      ' Autres paramètres, Lancement du processus avec myProcess.Start()...
      myStreamWriter.WriteLine("/reload")

      À noter qu'on ne peut pas lancer un fichier .bat quand on utilise cette méthode, donc il faut passer les paramètres nécessaires dans le code de ton programme.
      1
      1. Voici la réponse d'un pro ;-)
        Je ne connais pas Minecraft donc je n'aurais pas réussi à l'aider...
        0
      2. Contributeur
        Minecraft (comme plein d'autres jeux d'ailleurs) possède une interface console dans laquelle on peut taper des commandes pour influencer le jeu; ça se présente comme une invite de commande "normale" de Windows, mais les commandes sont évidemment différentes...
        0
      3. oui je le sait bien mais pour vb cpareil non ?
        0
      4. Contributeur
        Non, VB n'a pas forcément une interface console; les applis GUI (Windows Forms) n'en ont pas. Mais on peut en créer une.
        0
      5. re ! g ecrit

        myProcess.StartInfo.UseShellExecute = False
        myProcess.StartInfo.RedirectStandardInput = True
        StreamWriter myStreamWriter = myProcess.StandardInput
        myStreamWriter.WriteLine("/reload")

        comme tu m' a dit mais il y a plusieurs erreurs : " 'myProcess' n' est pas déclaré. il peut etre inaccessible en raison de son niveau de protection. " et " 'myStreamWriter' n' est pas déclaré. il peut etre inaccessible en raison de son niveau de protection. "
        0
    2. Merci de ta réponse très rapide.

      Je suis débutant et je ne comprends pas toutes ces lignes... ou est-ce que j' entre la commande /reload et comment sait-t-il de quel fichier il s' agit ?
      0
      1. et dans

        Dim myProcess As New Process()
        myProcess.StartInfo.UseShellExecute = False
        myProcess.StartInfo.FileName = "C:\Users\*****\Desktop\Serveur\Run.bat"
        myProcess.StartInfo.CreateNoWindow = True
        myProcess.Start()

        Je l' écrit ou la commande de la console ?
        0
        1. De quelle commande parles-tu ?
          Si tu as des paramètres à passer à ton Run.bat, ce sera sur la même ligne.
          Exemple : myProcess.StartInfo.FileName = "C:\Users\*****\Desktop\Serveur\Run.bat -paramètre"
          Désolé, je touche un peu à VB.NET mais pas à Minecraft...
          0
        2. je voudrait faire l' équivalent de l' insertion d' une commande dans la console et apuyer sur entrer
          0
        3. C'est bien dans myProcess.StartInfo.FileName dans ce cas.
          Tu écris ce que tu tapes dans une invite de commandes ;-)
          0
        4. mais dans myProcess.StartInfo.FileName ce n' est pas le chemin du fichier .bat qu'il faut mettre ?
          0
        5. C'est ce que dit Microsoft mas en fait, il sagit de ce que tu écris dans ta ligne cmd ;-)
          0
      2. mais de maniere générale pour les commendes on écrit quoi ou ?
        -1