Exécuter un logiciel en arrière plan [Résolu]

cs_GhostMoon 85 Messages postés dimanche 14 mars 2010Date d'inscription 17 juin 2013 Dernière intervention - 21 mars 2010 à 15:20 - Dernière réponse : cs_GhostMoon 85 Messages postés dimanche 14 mars 2010Date d'inscription 17 juin 2013 Dernière intervention
- 2 avril 2010 à 01:56
Salut tout le monde j suis débutante en c# je veux intégrer un logiciel et l'exécute en arrière plan et l résultat sera affichée en avant plan. Comment manipuler mon logiciel en arrière plan .
Please help c'est urgent
Afficher la suite 

Votre réponse

41 réponses

Meilleure réponse
cs_GhostMoon 85 Messages postés dimanche 14 mars 2010Date d'inscription 17 juin 2013 Dernière intervention - 22 mars 2010 à 17:38
3
Merci
j'esper que ce lien repon a té question et vous aide à comprendre m problème

http://www.titania.co.uk/index.php?option=com_content&view=article&id=99&Itemid=85

Merci cs_GhostMoon 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_GhostMoon
Meilleure réponse
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 24 mars 2010 à 14:27
3
Merci
J'ai utilisé ce batch pour reproduire le comportement de nipper :
@echo off
ping localhost > NUL
echo ^<html^> > %4
echo Résulat = >> %4
type %2 | findstr /I toto >> %4
echo ^</html^> >> %4


Il génère une page HTML contenant "Résultat=" toutes les lignes contenant toto dans le fichier passé en entrée.

Et voici le code C# qui lance et affiche la page HTML générée.
Il y a webbowser et un bouton sur la form.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;

namespace LaunchApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Process p = new Process();
p.StartInfo.FileName = "nipper";
p.StartInfo.Arguments = "-input config.txt -output out.html";
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();
p.WaitForExit();
MessageBox.Show("Exécution terminée, affichage du résultat...");
webBrowser1.Navigate("file:///" + Directory.GetCurrentDirectory().Replace("\", "/") + "/out.html", false);
}
}
}

Merci cs_rt15 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_rt15
Meilleure réponse
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 24 mars 2010 à 16:31
3
Merci
Pourquoi ai je reproduit le comportement de nipper ? Parce que je n'ai pas nipper et ne veut pas l'avoir. Dans ton cas, tu peux commencer par essayer avec mon batch pour être sûr avant de passer à nipper.

il ne fonctionne pas !!!

Encore une fois, essaie d'être précises. Est ce un problème à la compilation ? Une exception à l'exécution ? Un problème fonctionnel (Pas d'erreur mais tu n'obtiens pas le résultat attendu) ?

Forcément, pour que ce code fonctionne, il faut qu'un certains nombre de paramètres soit réunis. Il faut que config.txt soit dispo, il faut que nipper.bat soit trouvable...

Pour le code, il est très simple... Je me demande quel point est obscure.
1) Je déclare et instancie un process.
2) Ce process doit exécuter nipper (.bat, .exe ou autre, c'est pas précisé)
3) Mon fichier .bat prend "4" paramètres, comme nipper : du blabla, le nom du fichier d'entrée, tu blabla, le nom du fichier de sortie.
4) J'affecte le style de fenêtre pour que le processus nipper soit invisible.
5) Je lance le process.
6) J'attends la fin du process. C'est très important car si je continue instantanément, nipper n'a pas le temps de générer le fichier de sortie.
7) J'affiche une boîte.
8) Je demande au web browser de m'afficher le contenu du fichier de sortie. Pour cela j'utilise sa méthode navigate. Le fichier de sortie n'est pas sur internet (http://) mais sur le disque -> (file://). Et il faut donner le chemin complet. Le fichier de sortie est généré dans le dossier courant que je récupère avec Directory.GetCurrentDirectory(). Je remplace au passage les "" par des "/" car c'est une URL. Et false pour ne pas avoir de nouvelle fenêtre web.

Pour tester mon code... Créé une nouvelle application, pose un webbrowser et un bouton dessus. Double clique sur le bouton pour générer le squellette du gestionnaire d'évènement. Colle dans la méthode du bouton :

			Process p = new Process();
p.StartInfo.FileName = "nipper";
p.StartInfo.Arguments = "-input config.txt -output out.html";
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();
p.WaitForExit();
MessageBox.Show("Exécution terminée, affichage du résultat...");
webBrowser1.Navigate("file:///" + Directory.GetCurrentDirectory().Replace("\", "/") + "/out.html", false);


Ajoute les using manquants.

Génère le .exe.

Dans le répertoire où le .exe a été généré, fait un fichier .bat appelé nipper.bat et mets y le code du .bat ci-dessus. Fait aussi un fichier config.txt, le fichier d'entrée. Tu peux y mettre des toto ou pas, ça n'a pas d'importance. Ensuite, lance l'exe et clique sur le bouton.

Merci cs_rt15 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_rt15
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 21 mars 2010 à 17:49
0
Merci
Bonjour,

Pour une question C#, merci de poster sur csharpfr.com dans un thème csharp.
Et "urgent" n'est pas un mot apprécié sur ce site.

Le logiciel exécuté en arrière plan, il ce n'est pas ton logiciel ? Si non, comment communique-t-il son résultat (Programme console, création d'un fichier) ?

[ Déplacé sur csharpfr ]
Commenter la réponse de cs_rt15
cs_GhostMoon 85 Messages postés dimanche 14 mars 2010Date d'inscription 17 juin 2013 Dernière intervention - 22 mars 2010 à 15:42
0
Merci
dsl pour "urgent"!!
le logiciel exécuté en arrière plan est un logiciel externe de mn application .
je veux integrer un logiciel (nipper) a mn application et que ce logiciel sera exécuter en arrière plan !!! C'est possible de manipuler en arrière plan ce logiciel (nipper) a partir de mn application ???? )!!
merci !!!!
Commenter la réponse de cs_GhostMoon
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 22 mars 2010 à 15:55
0
Merci
C'est généralement compliqué d'interagir avec une application tierce... Tu es sûr que tu ne peux pas réaliser les mêmes tâches dans ton propre logiciel ?

Et je réitère ma question : quel type d'interface utilisateur est utilisée dans nipper ? C'est une application console/invite de commande portable ? C'est une appli Win32 ? Du QT ? Du java/swing ? Une impression d'écran (Publier sur imageshack.us ou autre) donnerait sûrement une idée.
Commenter la réponse de cs_rt15
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 22 mars 2010 à 17:57
0
Merci
[quote=fin de la page de ton lien]nipper --input=device-config.txt --output=report.html/quote
Il est donc utilisable en invite de commande.
Il suffit donc que ton logiciel génère un fichier de configuration, lance la commande, et récupère le fichier HTML.

Pour lancer la commande, tu peux utiliser la classe Process (Avec le CreateNoWindow de son StartInfo à false pour que le processus soit caché) et utiliser sa méthode WaitForExit pour attendre la fin de son exécution.

Après, tu peux afficher le HTML directement (Dans un WebBrowser) ou récupérer des infos dedans en fonction de ce que tu veux faire.
Commenter la réponse de cs_rt15
cs_GhostMoon 85 Messages postés dimanche 14 mars 2010Date d'inscription 17 juin 2013 Dernière intervention - 22 mars 2010 à 20:46
0
Merci
j arrive pas à lancer et exécuter une commande arrière plan !!!!(nipper -ios-switch ......) et j'arrive pas afficher l resultat en avant plan .

Voila :

ystem.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
string input = comboBox1.Text;
string result;
process.Start();
process.StandardInput.Write(input);
result = process.StandardOutput.ReadToEnd();
process.Close();
Commenter la réponse de cs_GhostMoon
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 23 mars 2010 à 09:25
0
Merci
Tu n'es pas obligé de passer par cmd.exe, tu dois pouvoir appeler directement nipper. Ca serait plus simple. Je ne sais pas si la sortie standard t'intéresse vraiment. C'est surtout le fichier HTML généré qui doit contenir le résultat j'imagine.
Commenter la réponse de cs_rt15
cs_GhostMoon 85 Messages postés dimanche 14 mars 2010Date d'inscription 17 juin 2013 Dernière intervention - 23 mars 2010 à 13:26
0
Merci
oui le fichier html doit être m résultat mais le problem que le nipperone doit etre exécuter en arrière plan le resultat doit etre afficher en avant plan et j arrive pas a manipuler ce logiciel en arrière plan !!!!
j'arrive a integrer le logiciel a mon application mais j arrive pas a le manipuler en arrière plan !!!!
Commenter la réponse de cs_GhostMoon
cs_GhostMoon 85 Messages postés dimanche 14 mars 2010Date d'inscription 17 juin 2013 Dernière intervention - 23 mars 2010 à 15:01
0
Merci
Est ce que c'est possible de manipuler l'interface graphique d'un logiciel externe (nipperone) a partir de mon application ?????????? j arrive pas à résolut ce problème et à trouver le code en c#!!!!
Commenter la réponse de cs_GhostMoon
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 23 mars 2010 à 16:14
0
Merci
Pourquoi passer par l'interface graphique alors qu'il est appelable en invite de commande ? C'est bien plus compliqué de manipuler l'interface graphique.

Quel est ton souci exactement ? Parviens-tu à générer au moins le fichier html ?
Commenter la réponse de cs_rt15
cs_GhostMoon 85 Messages postés dimanche 14 mars 2010Date d'inscription 17 juin 2013 Dernière intervention - 23 mars 2010 à 21:18
0
Merci
mn but c'est avoir le rapport de nipperone comme resultat !!!! (ce rapport depend de script de configuration entrer par l'utilisateur (fichier txt) .
Je m'explique mon interface graphique realiser par c# est comme l'interface graphie de nipperone c'est à dire j choisi le periphérique(routeur ,switch etc...) et je charge le script puis l'orsque je clique sur un bouton de mn application (par exemple exécuter) le rapport de nipper sera afficher comme resultat de mn application !!!!

j arrive pas a resolu ce problem!!!!
Commenter la réponse de cs_GhostMoon
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 24 mars 2010 à 09:50
0
Merci
Si tu veux de l'aide, il faut être précise. Je crois avoir compris ce que tu veux faire. Ce que je n'ai pas compris, c'est où tu bloques.

Parviens tu à lancer nipper depuis ton application console ? Parviens tu as lui faire générer un fichier HTML ? Parviens tu as attendre la fin de l'exécution de nipper ? Parviens tu as lire le fichier HTML ?
Commenter la réponse de cs_rt15
cs_GhostMoon 85 Messages postés dimanche 14 mars 2010Date d'inscription 17 juin 2013 Dernière intervention - 24 mars 2010 à 12:39
0
Merci
mon problem c'est de savoir le code en c# pour avoir le rapport de nipper comme resultat de mn application !!!
Commenter la réponse de cs_GhostMoon
cs_GhostMoon 85 Messages postés dimanche 14 mars 2010Date d'inscription 17 juin 2013 Dernière intervention - 24 mars 2010 à 15:48
0
Merci
vous pouvez m'expliquer pourquoi reproduire le comprtement de nipper ????
Merci
Commenter la réponse de cs_GhostMoon
cs_GhostMoon 85 Messages postés dimanche 14 mars 2010Date d'inscription 17 juin 2013 Dernière intervention - 24 mars 2010 à 15:57
0
Merci
ou je reproduit le comportement de nipper???
Commenter la réponse de cs_GhostMoon
cs_GhostMoon 85 Messages postés dimanche 14 mars 2010Date d'inscription 17 juin 2013 Dernière intervention - 24 mars 2010 à 16:06
0
Merci
pouvez vous m'expliquer le code c# ??? il ne fonctionne pas !!!
Commenter la réponse de cs_GhostMoon
cs_GhostMoon 85 Messages postés dimanche 14 mars 2010Date d'inscription 17 juin 2013 Dernière intervention - 24 mars 2010 à 17:19
0
Merci
je vous remercie beaucoup !!!!
le problème : Une exception à l'exécution.
merciiiiiiiiiiiiiiiiiie
Commenter la réponse de cs_GhostMoon
cs_rt15 3982 Messages postés mardi 8 mars 2005Date d'inscription 7 novembre 2014 Dernière intervention - 24 mars 2010 à 17:25
0
Merci
Ah... Mais comme d'habitude, je ne suis pas devin : je ne sais pas de quel exception il s'agit ni de la ligne correspondante...

Tu peux copier coller l'exception ici et donner la ligne posant problème ? Mais avant ça, peux-tu essayer de trouver l'erreur toi même ? (Exception file not found ou autre).
Commenter la réponse de cs_rt15

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.