PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Récupérer la résultat d'une commande windows
Récupérer la résultat d'une commande windows
Iniciado por Kamel DevSoft, 02,oct. 2020 14:13 - 5 respuestas
Miembro registrado
42 mensajes
Publicado el 02,octubre 2020 - 14:13
Bonjour, je souhaite récupérer le résultat d'une commande Windows (CMD) dans mon appli Windev.
Comment faire ?
Merci à vous
Miembro registrado
948 mensajes
Publicado el 02,octubre 2020 - 15:02
bonjour
une méthode parmi d'autre
// see : https://msdn.microsoft.com/fr-fr/library/system.diagnostics.processstartinfo(v=vs.110).aspx
// Utilise l'assemblage .NET : System
Procedure ExecuteProgram(pCommande est une chaîne, pArguments = ""):chaîne
myDataLine est une chaîne ANSI
ScriptProcess est un System.Diagnostics.Process dynamique

myDataLine = ""
ScriptProcess = allouer un'system.Diagnostics.process'
//-----
ScriptProcess.StartInfo.FileName = pCommande // Nom du programme à exécuter
ScriptProcess.StartInfo.Arguments = pArguments
ScriptProcess.StartInfo.CreateNoWindow = True
ScriptProcess.StartInfo.UseShellExecute = False
ScriptProcess.StartInfo.RedirectStandardError = True
ScriptProcess.StartInfo.RedirectStandardOutput = True // Redirige les messages
ScriptProcess.StartInfo.RedirectStandardInput = True
ScriptProcess.start() // go
//-----
WHEN EXCEPTION IN
myDataLine = ScriptProcess.StandardOutput.ReadToEnd() // lecture des données venant de «stdout»
DO
ScriptProcess:Close() // Fermeture
Libérer(ScriptProcess) // Libération de la mémoire
myDataLine = ""
RENVOYER myDataLine
END

IF myDataLine = "" THEN
myDataLine = ScriptProcess.StandardError.ReadToEnd() // erreur alors on lit «stderr»
END
ScriptProcess.WaitForExit() // Attend la fin
ScriptProcess:Close() // Fermeture
Libérer(ScriptProcess) // Libération de la mémoire

RENVOYER myDataLine


--
«Nos clients sont nos meilleurs beta testeur.» H. Mintzberg
«Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse» Troisième loi de Greer
Miembro registrado
42 mensajes
Publicado el 02,octubre 2020 - 15:57
comment utilisé sa sous windev ?
Miembro registrado
120 mensajes
Publicado el 02,octubre 2020 - 17:57
Bonjour
Toute commande windows peut stocker le résultat dans un fichier texte avec le symbole >

Exemple :

Dir *.dll > D:\ListeDLL.txt

Stocke le résultat du DIR dans un fichier sur D:\ et nommé ListeDLL.txt
Attention à préciser un chemin complet pour être sur de retrouver ton fichier résultat

Bon weekend
Lionel.
Miembro registrado
948 mensajes
Publicado el 02,octubre 2020 - 18:25
Bonjour
Très simplement en ajoutant l'assemblage .NET SystemSystem, de créer la fonction : ExecuteProgram, de copier/coller le code
Exemple d'utilisation :
WinLogNames est une chaîne = ExecuteProgram( "c:\Windows\System32\wevtutil.exe", "el")


--
«Nos clients sont nos meilleurs beta testeur.» H. Mintzberg
«Un programme informatique fait ce que vous lui avez dit de faire, pas ce que vous voulez qu'il fasse» Troisième loi de Greer
Publicado el 03,octubre 2020 - 18:06
Le 02/10/2020 à 16:25, Philippe Pasquali a écrit :
Bonjour
Très simplement en ajoutant l'assemblage .NET SystemSystem, de créer la
fonction : ExecuteProgram, de copier/coller le code Exemple d'utilisation :
WinLogNames est une chaîne = ExecuteProgram(
"c:\Windows\System32\wevtutil.exe", "el")


--
«Nos clients sont nos meilleurs beta testeur.» H. Mintzberg
«Un programme informatique fait ce que vous lui avez dit de faire, pas
ce que vous voulez qu'il fasse» Troisième loi de Greer


Bonjour,
J'utilise Windev 12, et j'ai essayé d'utiliser votre procédure.
Pour cela, j'ai importé l'assemblage .NET "System" (dans lequel il y a
bien System.diagnostics), mais j'ai une erreur de syntaxe à la ligne :
ScriptProcess est un system.Diagnostics.Process dynamique
(erreur sur le point entre system et Diagnostics)
Par ailleurs, sous WD12, les chaines ne peuvent pas être déclarées ANSI.
Est-ce que je peux déclarer la chaine simplement comme suit ? :
myDataLine est une chaîne //ansi
Merci