IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Afficher les carracterres accentués venant d'un affichage CMD


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Par défaut Afficher les carracterres accentués venant d'un affichage CMD
    Bonjour, je n'arrive pas a afficher les caractères accentués venant d'informations affichées dans une fenêtre CMD affichée a partir d'une commande et récupérées dans une TextBox.
    Exemple pour IPCONFIG, j'obtient :
    Masque de sous-r‚seau. . . .ÿ. . . . . : 255.255.255.0
    Passerelle par d‚faut. . . .ÿ. . . . . : fe80::72fc:8fff:fe69:3248%18


    Voici la partie du code concernée :
    'Execute la commande DOS
    Private Sub ExecuteCommand(command As String)
    Dim processInfo As New ProcessStartInfo("cmd", " /c " & command)
    processInfo.RedirectStandardOutput = True
    processInfo.UseShellExecute = False
    processInfo.CreateNoWindow = True

    Dim process As Process = Process.Start(processInfo)
    Dim output As String = process.StandardOutput.ReadToEnd()
    process.WaitForExit()

    TextBox1.Text = output
    End Sub

    command est la valeur de la commande CMD que l'on va lancer, ici ipconfig.

    Si je rajoute :
    cmd.exe", " /c chcp 850" & command

    J’obtiens une page vide dans la TextBox
    Quelqu'un a-t-il une idée ?

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    3 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 011
    Par défaut
    Il s'agit d'un problème d'encodage des plus classique.
    Une solution simple est de redéfinir l'encodage de la sortie standard.
    Au passage, pas besoin de cmd pour exécuter ipconfig.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)
     
        Dim info = New ProcessStartInfo With {
                .UseShellExecute = False,
                .RedirectStandardOutput = True,
                .StandardOutputEncoding = Encoding.GetEncoding(850),
                .FileName = "ipconfig.exe"
            }
     
        Dim p = Process.Start(info)
        Dim output = p.StandardOutput.ReadToEnd()
     
        p.WaitForExit()
     
        TextBox1.Text = output
    End Sub
    End Class
    Edit :
    La version en passant par cmd au lieu de ipconfig directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
     
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)
     
        Dim info = New ProcessStartInfo("cmd", " /c " & "ipconfig") With {
            .RedirectStandardOutput = True,
            .StandardOutputEncoding = Encoding.GetEncoding(850),
            .UseShellExecute = False,
            .CreateNoWindow = True
        }
     
        Dim p = Process.Start(info)
        Dim output As String = p.StandardOutput.ReadToEnd()
     
        p.WaitForExit()
     
        TextBox1.Text = output
    End Sub

  3. #3
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Par défaut test
    Merci pour cette super réponse, je test et reviens pour donner le résultat.
    😃

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 586
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 586
    Par défaut
    Sinon pour chainer les commandes en "DOS" il faut les séparer par un ou 2 & (2 si on souhaite que la seconde commande soit lancée si la 1ere est réussie)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.exe", " /c chcp 850 && " & command
    devrait aussi fonctionner

    Mais la solution de popo me semble meilleure dans l'approche.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Par défaut Les lettres accentuées enfin visibles
    Merci emfred, mais ta solution de fonctionne pas, et toujours pas de visualisation des lettres accentuées.

    Et grand merci, popo, Ta solution fonctionne très bien, j'ai pris le 2eme choix pour uniformiser l'ensemble, au cas ou je doive mettre des instructions DOS comme dir ou autre.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/06/2018, 14h37
  2. Réponses: 2
    Dernier message: 09/10/2015, 17h53
  3. Réponses: 1
    Dernier message: 30/08/2012, 18h12
  4. Site d'actualités - Afficher les news venant d'un autre site
    Par manaboko dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 10/07/2008, 10h00
  5. Réponses: 2
    Dernier message: 14/04/2008, 08h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo