PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → stderr et stdout depuis une application Windows
stderr et stdout depuis une application Windows
Débuté par Cyril, 28 nov. 2017 11:38 - 1 réponse
Membre enregistré
30 messages
Posté le 28 novembre 2017 - 11:38
Bonjour à tous,

Nous utilisons un task manager pour lancer des exécutables sous windows et aurion besoin d'utilser la variable de retour "stderr" pour récupérer des informations de plantage et "stdout" quand tout est OK.

Mais après avoir longtemps cherché, je n'ai pas trouvé comment renvoyer ses informations.
Il y a bien la fonction "dbgSortieStandard" mais elle ne fonctionne qu'en appli LINUX.

Avez-vous une idée svp ??

Énorme merci d'avance.

Cyril.
Membre enregistré
948 messages
Posté le 28 novembre 2017 - 13:18
Bonjour,
Je ne suis pas sur que ce code puisse vous aider. Il permet de lancer un programme et de récupérer les flux stderr et stdout directement dans le programme Windev.
Utilise l'assemblage .NET : System
myDataLine, myError est une chaîne ANSI
ScriptProcess est un System.Diagnostics.Process dynamique


myDataLine = ""
myError = ""
ScriptProcess = allouer un 'system.Diagnostics.process'
//-----
ScriptProcess.StartInfo.FileName = "C:\Program Files\PuTTY\bf.cmd" // Nom du programme à exécuter
//-----------------------------------------------------------------------------------------------------------------------------------
// le fichier bf.cmd contient :
//-----------------------------
// @c:
// @cd \putty
// @plink.exe -batch -ssh -l root -pw rB5X7jAs51Kpu2qf m1343.contabo.host /var/www/html/php/blowfish/bf.sh DILICOM:9782000000006-3010000000006 6d6f7464706173736544696c69636f6d 3030303030303030
// Les «@» sont très importants, ils évitent d'avoir l'écho des commandes dans le résultat
//-----------------------------------------------------------------------------------------------------------------------------------
// le fichier /var/www/html/php/blowfish/bf.sh contient :
//-------------------------------------------------------
// #!/bin/bash
// result=`echo -n $1 | openssl enc -bf-cbc -nosalt -K $2 -iv $3 | openssl enc -base64`
// echo $result
//------------------------------------------------------------------------------------------------------------------------------------
// see :
// https://msdn.microsoft.com/fr-fr/library/system.diagnostics.processstartinfo(v=vs.110).aspx
//--------------------------------------------------------------------------------------------------
ScriptProcess.StartInfo.Arguments = ""
ScriptProcess.StartInfo.CreateNoWindow = True
ScriptProcess.StartInfo.UseShellExecute = False
ScriptProcess.StartInfo.RedirectStandardError = True
ScriptProcess.StartInfo.RedirectStandardOutput = True // Redirige les messages
ScriptProcess.StartInfo.RedirectStandardInput = True // Important si on ne veux pas un message d'erreur
ScriptProcess.start() // lance le programme
//-----
myDataLine = ScriptProcess.StandardOutput.ReadToEnd() // lecture des données venant de «stdout»
IF myDataLine = "" THEN
myError = 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

//----------------------------------------------
Trace(Remplace(myDataLine, Caract(0x0a), ""))
//Trace("[" + Remplace(myError, Caract(0x0a), "") + "]")