Exécuter un logiciel en arrière plan

Résolu
cs_GhostMoon Messages postés 82 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 17 juin 2013 - 21 mars 2010 à 15:20
cs_GhostMoon Messages postés 82 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 17 juin 2013 - 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

41 réponses

cs_GhostMoon Messages postés 82 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 17 juin 2013
22 mars 2010 à 17:38
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
3
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
24 mars 2010 à 14:27
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);
}
}
}
3
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
24 mars 2010 à 16:31
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.
3
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
21 mars 2010 à 17:49
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 ]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_GhostMoon Messages postés 82 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 17 juin 2013
22 mars 2010 à 15:42
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 !!!!
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
22 mars 2010 à 15:55
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.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
22 mars 2010 à 17:57
[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.
0
cs_GhostMoon Messages postés 82 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 17 juin 2013
22 mars 2010 à 20:46
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();
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
23 mars 2010 à 09:25
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.
0
cs_GhostMoon Messages postés 82 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 17 juin 2013
23 mars 2010 à 13:26
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 !!!!
0
cs_GhostMoon Messages postés 82 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 17 juin 2013
23 mars 2010 à 15:01
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#!!!!
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
23 mars 2010 à 16:14
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 ?
0
cs_GhostMoon Messages postés 82 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 17 juin 2013
23 mars 2010 à 21:18
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!!!!
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
24 mars 2010 à 09:50
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 ?
0
cs_GhostMoon Messages postés 82 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 17 juin 2013
24 mars 2010 à 12:39
mon problem c'est de savoir le code en c# pour avoir le rapport de nipper comme resultat de mn application !!!
0
cs_GhostMoon Messages postés 82 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 17 juin 2013
24 mars 2010 à 15:48
vous pouvez m'expliquer pourquoi reproduire le comprtement de nipper ????
Merci
0
cs_GhostMoon Messages postés 82 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 17 juin 2013
24 mars 2010 à 15:57
ou je reproduit le comportement de nipper???
0
cs_GhostMoon Messages postés 82 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 17 juin 2013
24 mars 2010 à 16:06
pouvez vous m'expliquer le code c# ??? il ne fonctionne pas !!!
0
cs_GhostMoon Messages postés 82 Date d'inscription dimanche 14 mars 2010 Statut Membre Dernière intervention 17 juin 2013
24 mars 2010 à 17:19
je vous remercie beaucoup !!!!
le problème : Une exception à l'exécution.
merciiiiiiiiiiiiiiiiiie
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
24 mars 2010 à 17:25
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).
0
Rejoignez-nous