C'est une question probablement récurante dont j'ai du mal à trouver une
réponse claire dans les forum.
Avec la commande Process.start(), j'exécute un commande DOS dont je récupère
le resultat dans une chaine avec Process.StandardOutput.ReadToEnd().
La chaine resultat contient, par exemple, des caractères accentués dans le
DOS, mais illisibles dans mon application Windows.
Par quel moyen puis-je convertir cette chaine de caractères DOS en chaine de
caractères lisibles sous windows ?
Je me doute qu'il faut utiliser la classe Encoding, mais j'ai déjà des
difficultés à savoir de quel codage je dois partir (DOS) et vers quel codage
je doit arriver (windows).
En effet, j'en suis resté aux vieilles fonction API du style CharToOem et
CharToAnsi.
Un petit code exemple serait le bienvenu pour mettre un peu d'ordre dans mes
neurones.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred
"Luis" a écrit dans le message de news:
Bonjour,
Bonjour,
Avec la commande Process.start(), j'exécute un commande DOS dont je récupère le resultat dans une chaine avec Process.StandardOutput.ReadToEnd(). La chaine resultat contient, par exemple, des caractères accentués dans le DOS, mais illisibles dans mon application Windows.
Par quel moyen puis-je convertir cette chaine de caractères DOS en chaine de caractères lisibles sous windows ?
Le mieux est de démarrer le process en lui affectant un objet ProcessStartInfo dans lequel on précise la propriété StandardOutputEncoding.
Sinon, sur un système Français, l'encodage à utiliser est généralement OEM 850 System.Text.Encoding.GetEncoding(850)
-- Fred
"Luis" <luis-manuel.lopes@orange.fr> a écrit dans le message de
news:780823B2-3092-40DC-80E2-539158BFBFAD@microsoft.com...
Bonjour,
Bonjour,
Avec la commande Process.start(), j'exécute un commande DOS dont je
récupère
le resultat dans une chaine avec Process.StandardOutput.ReadToEnd().
La chaine resultat contient, par exemple, des caractères accentués
dans le
DOS, mais illisibles dans mon application Windows.
Par quel moyen puis-je convertir cette chaine de caractères DOS en
chaine de
caractères lisibles sous windows ?
Le mieux est de démarrer le process en lui affectant un objet
ProcessStartInfo dans lequel on précise la propriété
StandardOutputEncoding.
Sinon, sur un système Français, l'encodage à utiliser est généralement
OEM 850
System.Text.Encoding.GetEncoding(850)
Avec la commande Process.start(), j'exécute un commande DOS dont je récupère le resultat dans une chaine avec Process.StandardOutput.ReadToEnd(). La chaine resultat contient, par exemple, des caractères accentués dans le DOS, mais illisibles dans mon application Windows.
Par quel moyen puis-je convertir cette chaine de caractères DOS en chaine de caractères lisibles sous windows ?
Le mieux est de démarrer le process en lui affectant un objet ProcessStartInfo dans lequel on précise la propriété StandardOutputEncoding.
Sinon, sur un système Français, l'encodage à utiliser est généralement OEM 850 System.Text.Encoding.GetEncoding(850)
-- Fred
Luis
"Fred" wrote:
"Luis" a écrit dans le message de news: > Bonjour,
Bonjour,
> Avec la commande Process.start(), j'exécute un commande DOS dont je > récupère > le resultat dans une chaine avec Process.StandardOutput.ReadToEnd(). > La chaine resultat contient, par exemple, des caractères accentués > dans le > DOS, mais illisibles dans mon application Windows. > > Par quel moyen puis-je convertir cette chaine de caractères DOS en > chaine de > caractères lisibles sous windows ?
Le mieux est de démarrer le process en lui affectant un objet ProcessStartInfo dans lequel on précise la propriété StandardOutputEncoding.
Sinon, sur un système Français, l'encodage à utiliser est généralement OEM 850 System.Text.Encoding.GetEncoding(850)
-- Fred
Merci Fred pour ces renseignements. Le Codage pour windows est aussi le "Windows-1252".
J'ai fait des essais de convertion du retour de la commande DOS, de OEM850 vers Windows-1252, sans succès.
Je viens d'essayer ton conseil, a savoir d'utiliser la propriété StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas compte de ce paramètre.
J'ai du me résoudre à utiliser les fonctions API OemToChar (dos vers windows) et CharToOem (windows vers dos).
Je laisse ici le code que j'ai trouvé sur un site. Cela pourrait servir à d'autres.
En C#, il faudra utiliser les fonctions OemToChar1 et CharToOem1.
Merci pour tout. Luis
"Fred" wrote:
"Luis" <luis-manuel.lopes@orange.fr> a écrit dans le message de
news:780823B2-3092-40DC-80E2-539158BFBFAD@microsoft.com...
> Bonjour,
Bonjour,
> Avec la commande Process.start(), j'exécute un commande DOS dont je
> récupère
> le resultat dans une chaine avec Process.StandardOutput.ReadToEnd().
> La chaine resultat contient, par exemple, des caractères accentués
> dans le
> DOS, mais illisibles dans mon application Windows.
>
> Par quel moyen puis-je convertir cette chaine de caractères DOS en
> chaine de
> caractères lisibles sous windows ?
Le mieux est de démarrer le process en lui affectant un objet
ProcessStartInfo dans lequel on précise la propriété
StandardOutputEncoding.
Sinon, sur un système Français, l'encodage à utiliser est généralement
OEM 850
System.Text.Encoding.GetEncoding(850)
--
Fred
foleide@free.fr
Merci Fred pour ces renseignements.
Le Codage pour windows est aussi le "Windows-1252".
J'ai fait des essais de convertion du retour de la commande DOS, de OEM850
vers Windows-1252, sans succès.
Je viens d'essayer ton conseil, a savoir d'utiliser la propriété
StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas
compte de ce paramètre.
J'ai du me résoudre à utiliser les fonctions API OemToChar (dos vers
windows) et CharToOem (windows vers dos).
Je laisse ici le code que j'ai trouvé sur un site. Cela pourrait servir à
d'autres.
"Luis" a écrit dans le message de news: > Bonjour,
Bonjour,
> Avec la commande Process.start(), j'exécute un commande DOS dont je > récupère > le resultat dans une chaine avec Process.StandardOutput.ReadToEnd(). > La chaine resultat contient, par exemple, des caractères accentués > dans le > DOS, mais illisibles dans mon application Windows. > > Par quel moyen puis-je convertir cette chaine de caractères DOS en > chaine de > caractères lisibles sous windows ?
Le mieux est de démarrer le process en lui affectant un objet ProcessStartInfo dans lequel on précise la propriété StandardOutputEncoding.
Sinon, sur un système Français, l'encodage à utiliser est généralement OEM 850 System.Text.Encoding.GetEncoding(850)
-- Fred
Merci Fred pour ces renseignements. Le Codage pour windows est aussi le "Windows-1252".
J'ai fait des essais de convertion du retour de la commande DOS, de OEM850 vers Windows-1252, sans succès.
Je viens d'essayer ton conseil, a savoir d'utiliser la propriété StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas compte de ce paramètre.
J'ai du me résoudre à utiliser les fonctions API OemToChar (dos vers windows) et CharToOem (windows vers dos).
Je laisse ici le code que j'ai trouvé sur un site. Cela pourrait servir à d'autres.
En C#, il faudra utiliser les fonctions OemToChar1 et CharToOem1.
Merci pour tout. Luis
Gilles Kohl [MVP]
On Sun, 16 Mar 2008 00:25:00 -0700, Luis wrote:
Merci Fred pour ces renseignements. Le Codage pour windows est aussi le "Windows-1252".
J'ai fait des essais de convertion du retour de la commande DOS, de OEM850 vers Windows-1252, sans succès.
Je viens d'essayer ton conseil, a savoir d'utiliser la propriété StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas compte de ce paramètre.
Cela fonctionne pour moi de la facon suivante:
ProcessStartInfo startInfo = new ProcessStartInfo(@"c:tmpechotext.bat"); startInfo.StandardOutputEncoding = Encoding.Default; startInfo.RedirectStandardOutput = true; startInfo.UseShellExecute = false; Process p = Process.Start(startInfo); string output = p.StandardOutput.ReadToEnd();
(echotext.bat a été crée sous DOS, et contient/écrit des charactères accentués.)
La chaine "output" est bien lisible.
Ce qui semble marcher aussi est ceci:
static void Main() { ProcessStartInfo startInfo = new ProcessStartInfo(@"c:tmpechotext.bat"); // startInfo.StandardOutputEncoding = Encoding.Default; startInfo.RedirectStandardOutput = true; startInfo.UseShellExecute = false; Process p = Process.Start(startInfo); string output = p.StandardOutput.ReadToEnd();
(Please reply to the group, not via email. Find my MVP profile with past articles / downloads here: http://www.gilleskohl.de/mvpprofile.htm)
On Sun, 16 Mar 2008 00:25:00 -0700, Luis <luis-manuel.lopes@orange.fr> wrote:
Merci Fred pour ces renseignements.
Le Codage pour windows est aussi le "Windows-1252".
J'ai fait des essais de convertion du retour de la commande DOS, de OEM850
vers Windows-1252, sans succès.
Je viens d'essayer ton conseil, a savoir d'utiliser la propriété
StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas
compte de ce paramètre.
Cela fonctionne pour moi de la facon suivante:
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
(echotext.bat a été crée sous DOS, et contient/écrit des charactères
accentués.)
La chaine "output" est bien lisible.
Ce qui semble marcher aussi est ceci:
static void Main()
{
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
// startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
Merci Fred pour ces renseignements. Le Codage pour windows est aussi le "Windows-1252".
J'ai fait des essais de convertion du retour de la commande DOS, de OEM850 vers Windows-1252, sans succès.
Je viens d'essayer ton conseil, a savoir d'utiliser la propriété StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas compte de ce paramètre.
Cela fonctionne pour moi de la facon suivante:
ProcessStartInfo startInfo = new ProcessStartInfo(@"c:tmpechotext.bat"); startInfo.StandardOutputEncoding = Encoding.Default; startInfo.RedirectStandardOutput = true; startInfo.UseShellExecute = false; Process p = Process.Start(startInfo); string output = p.StandardOutput.ReadToEnd();
(echotext.bat a été crée sous DOS, et contient/écrit des charactères accentués.)
La chaine "output" est bien lisible.
Ce qui semble marcher aussi est ceci:
static void Main() { ProcessStartInfo startInfo = new ProcessStartInfo(@"c:tmpechotext.bat"); // startInfo.StandardOutputEncoding = Encoding.Default; startInfo.RedirectStandardOutput = true; startInfo.UseShellExecute = false; Process p = Process.Start(startInfo); string output = p.StandardOutput.ReadToEnd();
(Please reply to the group, not via email. Find my MVP profile with past articles / downloads here: http://www.gilleskohl.de/mvpprofile.htm)
Luis
"Gilles Kohl [MVP]" wrote:
On Sun, 16 Mar 2008 00:25:00 -0700, Luis wrote:
>Merci Fred pour ces renseignements. >Le Codage pour windows est aussi le "Windows-1252". > >J'ai fait des essais de convertion du retour de la commande DOS, de OEM850 >vers Windows-1252, sans succès.
>Je viens d'essayer ton conseil, a savoir d'utiliser la propriété >StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas >compte de ce paramètre.
Cela fonctionne pour moi de la facon suivante:
ProcessStartInfo startInfo = new ProcessStartInfo(@"c:tmpechotext.bat"); startInfo.StandardOutputEncoding = Encoding.Default; startInfo.RedirectStandardOutput = true; startInfo.UseShellExecute = false; Process p = Process.Start(startInfo); string output = p.StandardOutput.ReadToEnd();
(echotext.bat a été crée sous DOS, et contient/écrit des charactères accentués.)
La chaine "output" est bien lisible.
Ce qui semble marcher aussi est ceci:
static void Main() { ProcessStartInfo startInfo = new ProcessStartInfo(@"c:tmpechotext.bat"); // startInfo.StandardOutputEncoding = Encoding.Default; startInfo.RedirectStandardOutput = true; startInfo.UseShellExecute = false; Process p = Process.Start(startInfo); string output = p.StandardOutput.ReadToEnd();
(Please reply to the group, not via email. Find my MVP profile with past articles / downloads here: http://www.gilleskohl.de/mvpprofile.htm)
Bonjour et merci pour ces exemples.
Dans mon cas, j'exécute la commande "MOUNTVOL" pour avoir la liste des points de montages en cours. De plus, MOUNTVOL est plus un programme DOS qu'une commande DOS. Les infos de départ étaient biaisées...je m'en excuse.
J'ai repris votre code et je l'ai exécuté. La sortie est encore en format DOS, donc non lisible.
Pourriez-vous essayer votre code en remplacant "c:tmpechotext.bat" par "mountvol" et me dire ce qu'il en sort. Peut-être ai-je un problème de configuration.
Merci d'avance.
Luis
"Gilles Kohl [MVP]" wrote:
On Sun, 16 Mar 2008 00:25:00 -0700, Luis <luis-manuel.lopes@orange.fr> wrote:
>Merci Fred pour ces renseignements.
>Le Codage pour windows est aussi le "Windows-1252".
>
>J'ai fait des essais de convertion du retour de la commande DOS, de OEM850
>vers Windows-1252, sans succès.
>Je viens d'essayer ton conseil, a savoir d'utiliser la propriété
>StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas
>compte de ce paramètre.
Cela fonctionne pour moi de la facon suivante:
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
(echotext.bat a été crée sous DOS, et contient/écrit des charactères
accentués.)
La chaine "output" est bien lisible.
Ce qui semble marcher aussi est ceci:
static void Main()
{
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
// startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
Bonjour et merci pour ces exemples.
Dans mon cas, j'exécute la commande "MOUNTVOL" pour avoir la liste des
points de montages en cours. De plus, MOUNTVOL est plus un programme DOS
qu'une commande DOS. Les infos de départ étaient biaisées...je m'en excuse.
J'ai repris votre code et je l'ai exécuté. La sortie est encore en format
DOS, donc non lisible.
Pourriez-vous essayer votre code en remplacant "c:tmpechotext.bat" par
"mountvol" et me dire ce qu'il en sort. Peut-être ai-je un problème de
configuration.
>Merci Fred pour ces renseignements. >Le Codage pour windows est aussi le "Windows-1252". > >J'ai fait des essais de convertion du retour de la commande DOS, de OEM850 >vers Windows-1252, sans succès.
>Je viens d'essayer ton conseil, a savoir d'utiliser la propriété >StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas >compte de ce paramètre.
Cela fonctionne pour moi de la facon suivante:
ProcessStartInfo startInfo = new ProcessStartInfo(@"c:tmpechotext.bat"); startInfo.StandardOutputEncoding = Encoding.Default; startInfo.RedirectStandardOutput = true; startInfo.UseShellExecute = false; Process p = Process.Start(startInfo); string output = p.StandardOutput.ReadToEnd();
(echotext.bat a été crée sous DOS, et contient/écrit des charactères accentués.)
La chaine "output" est bien lisible.
Ce qui semble marcher aussi est ceci:
static void Main() { ProcessStartInfo startInfo = new ProcessStartInfo(@"c:tmpechotext.bat"); // startInfo.StandardOutputEncoding = Encoding.Default; startInfo.RedirectStandardOutput = true; startInfo.UseShellExecute = false; Process p = Process.Start(startInfo); string output = p.StandardOutput.ReadToEnd();
(Please reply to the group, not via email. Find my MVP profile with past articles / downloads here: http://www.gilleskohl.de/mvpprofile.htm)
Bonjour et merci pour ces exemples.
Dans mon cas, j'exécute la commande "MOUNTVOL" pour avoir la liste des points de montages en cours. De plus, MOUNTVOL est plus un programme DOS qu'une commande DOS. Les infos de départ étaient biaisées...je m'en excuse.
J'ai repris votre code et je l'ai exécuté. La sortie est encore en format DOS, donc non lisible.
Pourriez-vous essayer votre code en remplacant "c:tmpechotext.bat" par "mountvol" et me dire ce qu'il en sort. Peut-être ai-je un problème de configuration.
Merci d'avance.
Luis
Luis
"Gilles Kohl [MVP]" wrote:
On Sun, 16 Mar 2008 00:25:00 -0700, Luis wrote:
>Merci Fred pour ces renseignements. >Le Codage pour windows est aussi le "Windows-1252". > >J'ai fait des essais de convertion du retour de la commande DOS, de OEM850 >vers Windows-1252, sans succès.
>Je viens d'essayer ton conseil, a savoir d'utiliser la propriété >StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas >compte de ce paramètre.
Cela fonctionne pour moi de la facon suivante:
ProcessStartInfo startInfo = new ProcessStartInfo(@"c:tmpechotext.bat"); startInfo.StandardOutputEncoding = Encoding.Default; startInfo.RedirectStandardOutput = true; startInfo.UseShellExecute = false; Process p = Process.Start(startInfo); string output = p.StandardOutput.ReadToEnd();
(echotext.bat a été crée sous DOS, et contient/écrit des charactères accentués.)
La chaine "output" est bien lisible.
Ce qui semble marcher aussi est ceci:
static void Main() { ProcessStartInfo startInfo = new ProcessStartInfo(@"c:tmpechotext.bat"); // startInfo.StandardOutputEncoding = Encoding.Default; startInfo.RedirectStandardOutput = true; startInfo.UseShellExecute = false; Process p = Process.Start(startInfo); string output = p.StandardOutput.ReadToEnd();
(Please reply to the group, not via email. Find my MVP profile with past articles / downloads here: http://www.gilleskohl.de/mvpprofile.htm)
Re-bonjour,
Je m'aperçois également que dans votre exemple, vous avez créé une Application console et non une Application Windows.
Cela explique sûrement que votre exemple fonctionne.
Merci. Luis
"Gilles Kohl [MVP]" wrote:
On Sun, 16 Mar 2008 00:25:00 -0700, Luis <luis-manuel.lopes@orange.fr> wrote:
>Merci Fred pour ces renseignements.
>Le Codage pour windows est aussi le "Windows-1252".
>
>J'ai fait des essais de convertion du retour de la commande DOS, de OEM850
>vers Windows-1252, sans succès.
>Je viens d'essayer ton conseil, a savoir d'utiliser la propriété
>StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas
>compte de ce paramètre.
Cela fonctionne pour moi de la facon suivante:
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
(echotext.bat a été crée sous DOS, et contient/écrit des charactères
accentués.)
La chaine "output" est bien lisible.
Ce qui semble marcher aussi est ceci:
static void Main()
{
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
// startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
>Merci Fred pour ces renseignements. >Le Codage pour windows est aussi le "Windows-1252". > >J'ai fait des essais de convertion du retour de la commande DOS, de OEM850 >vers Windows-1252, sans succès.
>Je viens d'essayer ton conseil, a savoir d'utiliser la propriété >StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas >compte de ce paramètre.
Cela fonctionne pour moi de la facon suivante:
ProcessStartInfo startInfo = new ProcessStartInfo(@"c:tmpechotext.bat"); startInfo.StandardOutputEncoding = Encoding.Default; startInfo.RedirectStandardOutput = true; startInfo.UseShellExecute = false; Process p = Process.Start(startInfo); string output = p.StandardOutput.ReadToEnd();
(echotext.bat a été crée sous DOS, et contient/écrit des charactères accentués.)
La chaine "output" est bien lisible.
Ce qui semble marcher aussi est ceci:
static void Main() { ProcessStartInfo startInfo = new ProcessStartInfo(@"c:tmpechotext.bat"); // startInfo.StandardOutputEncoding = Encoding.Default; startInfo.RedirectStandardOutput = true; startInfo.UseShellExecute = false; Process p = Process.Start(startInfo); string output = p.StandardOutput.ReadToEnd();
(Please reply to the group, not via email. Find my MVP profile with past articles / downloads here: http://www.gilleskohl.de/mvpprofile.htm)
Re-bonjour,
Je m'aperçois également que dans votre exemple, vous avez créé une Application console et non une Application Windows.
Cela explique sûrement que votre exemple fonctionne.
Merci. Luis
Fred
"Luis" a écrit dans le message de news:
"Fred" wrote:
"Luis" a écrit dans le message de news:
Le Codage pour windows est aussi le "Windows-1252".
Oui mais la console de commande est par défaut en OEM 850 sauf si tu fais un CHCP.
J'ai fait des essais de convertion du retour de la commande DOS, de OEM850 vers Windows-1252, sans succès.
Voilà un bout de code fait rapidement en VB et qui fonctionne.
p = New Process psi = New ProcessStartInfo("mountvol.exe") psi.StandardOutputEncoding = System.Text.Encoding.GetEncoding(850) psi.RedirectStandardOutput = True psi.UseShellExecute = False p.StartInfo = psi p.Start() Dim s As String = p.StandardOutput.ReadToEnd Me.TextBox1.Text = s
-- Fred
"Luis" <luis-manuel.lopes@orange.fr> a écrit dans le message de
news:DD25AC85-24B3-467C-ADD8-B4B562F7080E@microsoft.com...
"Fred" wrote:
"Luis" <luis-manuel.lopes@orange.fr> a écrit dans le message de
news:780823B2-3092-40DC-80E2-539158BFBFAD@microsoft.com...
Le Codage pour windows est aussi le "Windows-1252".
Oui mais la console de commande est par défaut en OEM 850 sauf si tu
fais un CHCP.
J'ai fait des essais de convertion du retour de la commande DOS, de
OEM850
vers Windows-1252, sans succès.
Voilà un bout de code fait rapidement en VB et qui fonctionne.
p = New Process
psi = New ProcessStartInfo("mountvol.exe")
psi.StandardOutputEncoding =
System.Text.Encoding.GetEncoding(850)
psi.RedirectStandardOutput = True
psi.UseShellExecute = False
p.StartInfo = psi
p.Start()
Dim s As String = p.StandardOutput.ReadToEnd
Me.TextBox1.Text = s
Le Codage pour windows est aussi le "Windows-1252".
Oui mais la console de commande est par défaut en OEM 850 sauf si tu fais un CHCP.
J'ai fait des essais de convertion du retour de la commande DOS, de OEM850 vers Windows-1252, sans succès.
Voilà un bout de code fait rapidement en VB et qui fonctionne.
p = New Process psi = New ProcessStartInfo("mountvol.exe") psi.StandardOutputEncoding = System.Text.Encoding.GetEncoding(850) psi.RedirectStandardOutput = True psi.UseShellExecute = False p.StartInfo = psi p.Start() Dim s As String = p.StandardOutput.ReadToEnd Me.TextBox1.Text = s
-- Fred
Luis
"Fred" wrote:
"Luis" a écrit dans le message de news: > "Fred" wrote: > >> "Luis" a écrit dans le message de >> news:
> Le Codage pour windows est aussi le "Windows-1252".
Oui mais la console de commande est par défaut en OEM 850 sauf si tu fais un CHCP.
> J'ai fait des essais de convertion du retour de la commande DOS, de > OEM850 > vers Windows-1252, sans succès.
Voilà un bout de code fait rapidement en VB et qui fonctionne.
p = New Process psi = New ProcessStartInfo("mountvol.exe") psi.StandardOutputEncoding = System.Text.Encoding.GetEncoding(850) psi.RedirectStandardOutput = True psi.UseShellExecute = False p.StartInfo = psi p.Start() Dim s As String = p.StandardOutput.ReadToEnd Me.TextBox1.Text = s
-- Fred
Bonjour,
Merci. Cela fonctionne. Vous m'aviez donné l'info à votre première réponse mais je n'ai pas su l'exploiter correctement.
Merci à vous et à Gilles. Luis.
"Fred" wrote:
"Luis" <luis-manuel.lopes@orange.fr> a écrit dans le message de
news:DD25AC85-24B3-467C-ADD8-B4B562F7080E@microsoft.com...
> "Fred" wrote:
>
>> "Luis" <luis-manuel.lopes@orange.fr> a écrit dans le message de
>> news:780823B2-3092-40DC-80E2-539158BFBFAD@microsoft.com...
> Le Codage pour windows est aussi le "Windows-1252".
Oui mais la console de commande est par défaut en OEM 850 sauf si tu
fais un CHCP.
> J'ai fait des essais de convertion du retour de la commande DOS, de
> OEM850
> vers Windows-1252, sans succès.
Voilà un bout de code fait rapidement en VB et qui fonctionne.
p = New Process
psi = New ProcessStartInfo("mountvol.exe")
psi.StandardOutputEncoding =
System.Text.Encoding.GetEncoding(850)
psi.RedirectStandardOutput = True
psi.UseShellExecute = False
p.StartInfo = psi
p.Start()
Dim s As String = p.StandardOutput.ReadToEnd
Me.TextBox1.Text = s
--
Fred
foleide@free.fr
Bonjour,
Merci. Cela fonctionne.
Vous m'aviez donné l'info à votre première réponse mais je n'ai pas su
l'exploiter correctement.
"Luis" a écrit dans le message de news: > "Fred" wrote: > >> "Luis" a écrit dans le message de >> news:
> Le Codage pour windows est aussi le "Windows-1252".
Oui mais la console de commande est par défaut en OEM 850 sauf si tu fais un CHCP.
> J'ai fait des essais de convertion du retour de la commande DOS, de > OEM850 > vers Windows-1252, sans succès.
Voilà un bout de code fait rapidement en VB et qui fonctionne.
p = New Process psi = New ProcessStartInfo("mountvol.exe") psi.StandardOutputEncoding = System.Text.Encoding.GetEncoding(850) psi.RedirectStandardOutput = True psi.UseShellExecute = False p.StartInfo = psi p.Start() Dim s As String = p.StandardOutput.ReadToEnd Me.TextBox1.Text = s
-- Fred
Bonjour,
Merci. Cela fonctionne. Vous m'aviez donné l'info à votre première réponse mais je n'ai pas su l'exploiter correctement.