IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] System.Diagnostics.Process et resources


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Par défaut [C#] System.Diagnostics.Process et resources
    Bonjour!
    J'ai un petit soucis!

    En gros, j'ai un objet Process et j'aimerai qu'il lance l'execution de java avec en parametre un fichier present dans les resources de mon projet...
    Je ne vois pas trop comment faire...

    Voila un bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public static bool launchProcess()
    {
    _pProcess = new Process();
    _pProcess.StartInfo.RedirectStandardError	= true ;
    _pProcess.StartInfo.RedirectStandardOutput    = true ;
    _pProcess.StartInfo.FileName			     = "java" ;
    _pProcess.StartInfo.Arguments			    = _"-cp . mon_fichier_en_resources";
    _pProcess.StartInfo.UseShellExecute			= false;
    _pProcess.StartInfo.CreateNoWindow			= true;
    _pProcess.Start() ;
     
    ...
    }
    Le probleme etant qu'il ne trouve pas le fichier de resources...

    Merci!!

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    normal , il ne peut pas accéder à un fichier qui est dans les ressources de ton exe. Il faut que tu extraies le fichier des ressources et que tu l'enregistres dans le système de fichier (dans le répertoire temporaire par exemple)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Par défaut
    Merci pour ta réponse!

    Il faut que tu extraies le fichier des ressources
    Comment je peux faire ca?

    Merci encore!

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Ca dépend sous quelle forme est stocké ton fichier dans les ressources (fichier texte, binaire...). Selon le cas, tu l'écris dans un fichier avec un StreamWriter (pour le texte) ou un BinaryWriter.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 237
    Par défaut
    j'ai essaye d'ecrire mon fichier...

    Voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Stream streamExe = getStreamReaderFromResource("ma_resources");
    StreamWriter sw = new StreamWriter("mon_nouveau_fichier", false);
     
    long len = streamExe.Length;
    char[] buffer = new char[len];
     
    StreamReader sr = new StreamReader(streamExe);
    sr.Read(buffer, 0, (int)len);
    sw.Write(buffer);
    sw.Close();
    Le probleme est que mon fichier ecrit n'est pas identique au fichier de départ.
    Sachant que mon fichier de départ est un fichier .class.
    J'essaie ensuite de l'executer via la commande java, et il me sort en erreur...

    J'ai fais une boulette?

    Merci

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Oui, tu as fait une boulette
    Un fichier .class est un fichier binaire, et tu utilises un StreamReader et un StreamWriter pour le lire et l'écrire... Ces deux classes servent à manipuler des fichiers texte, et traitent les retours à la ligne d'une façon spécifique. Il faut utiliser un BinaryReader et un BinaryWriter à la place.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/01/2010, 21h27
  2. Problème avec System.Diagnostics.Process.Start();
    Par ZeProgrammator dans le forum ASP.NET
    Réponses: 13
    Dernier message: 06/11/2009, 10h55
  3. Envoi Mail Systems.Diagnostic.Process
    Par olibara dans le forum C#
    Réponses: 2
    Dernier message: 09/09/2008, 11h15
  4. Ouverture de document via System.Diagnostics.Process
    Par Spoonnny dans le forum Windows Forms
    Réponses: 4
    Dernier message: 09/01/2008, 18h24
  5. System.Diagnostics.Process.GetProcesses Accès refusé
    Par Courgette17 dans le forum VB.NET
    Réponses: 6
    Dernier message: 03/07/2007, 10h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo