Windev : Récupérer le résultat d'une commande DOS dans une chaîne Windev
Bonjour, voici une petite DLL C# permettant de récupérer le résultat d'une commande DOS dans une chaîne Windev.
L'appel se fait de cette façon :
Code:
1 2 3 4 5 6 7 8 9
|
LOCAL
sCmd est une chaîne
sResult est une chaîne
sCmd = "ipconfig"
sResult = Dos.ExecuteCommand(sCmd)
Info(sResult) |
Et voici le code de la DLL C# :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
using System;
using System.Diagnostics;
using System.Text;
namespace Dos
{
public class Dos
{
public static string ExecuteCommand(String _command)
{
int codePage = 850; //cf https://msdn.microsoft.com/en-us/library/system.text.encoding.codepage.aspx
Process p = new Process
{
StartInfo =
{
FileName = "cmd.exe",
Arguments = "/c "+"@"+_command,
RedirectStandardInput = true,
RedirectStandardOutput = true,
StandardOutputEncoding = Encoding.GetEncoding(codePage),
//StandardErrorEncoding = Encoding.GetEncoding(codePage),
UseShellExecute = false,
CreateNoWindow = true
},
};
p.Start();
/*
var bytes = Encoding.UTF8.GetBytes(command);
p.StandardInput.BaseStream.Write(bytes, 0, bytes.Length);
p.StandardInput.WriteLine();
*/
string sOutput = p.StandardOutput.ReadToEnd();
p.WaitForExit();
p.Close();
return sOutput;
}
}
} |
Pour intégrer la DLL dans Windev, il faut aller dans le menu Atelier / .NET / Utiliser un assemblage .NET dans ce projet / Bouton "Parcourir", et sélectionner la dll Dos.dll téléchargeable ici :
https://mon-partage.fr/f/B1ywKuuv/
Bonne prog :ccool: