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 :

Question sur System.Diagnostics.Process


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut Question sur System.Diagnostics.Process
    Bonjour tout le monde !

    J'ai ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /* Lancement de Reprodesk et des fichiers à visualiser */
                            System.Diagnostics.Process MyProc_ = new System.Diagnostics.Process();
                            MyProc_.StartInfo.UseShellExecute = true;
                            MyProc_.StartInfo.Arguments = strReprodeskParam;
                            MyProc_.StartInfo.FileName = "c:\\ocerd\\job.exe";
                            MyProc_.Start();
                            MyProc_.Close();
    Ce code me lance donc une instance de l'application job.exe, avec en paramètre une liste de fichier à ouvrir, contenue dans strReprodeskParam.

    En temps normal, cette application (job.exe), je l'utilisais à partir d'un code vb, dans lequel j'avais une boucle qui scrutait un répertoire et remplacait strReprodeskParam par un chemin d'accès vers un fichier.

    Résultat de tout ca, mon job.exe, ouvrait dans une meme fenetre, tous les fichiers demandés.

    Une fois que la commande : MyProc_.Start(), est lancée, on a dans le gestionnaire des taches une instance de Job.exe, aussi, j'aurai aimé pouvoir ré utiliser cette instance de Job.exe, et donc de MyProc_, pour modifier la variable strReprodeskParam. Est ce possible ?

    Merci d'avance

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    à priori non

    si c'est toi qui a écrit job.exe, il est alors possible de coder un dialogue entre les 2 applications
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    malheureusement ce n'est pas moi qui ai codé ce Job.exe.

    Y a t il une autre méthode pour appeler une application windows autrement qu'en utilisant System.Diagnostic.Process?

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    shell()

    mais ca revient à peu près au même, ca appelle process.start

    de toutes facon les arguments passés à un exe ne peuvent etre passés qu'en appelant l'exe, c'est windows qu'est comme ca depuis des années ...

    certains exe voyent qu'ils ont déjà une instance en route et n'en démarre pas une 2ème mais disent à la 1ère d'ouvrir des fichiers de plus
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    Si tu veux l'argument que je veux passer à mon Job.exe est constitué de chemins d'accès, séparés par des " ", exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strReprodeskParam = "c:\\test.tif c:\\test2.tif....c:\\test50.tif";
    En temps normal sur windows, je double clique sur un fichier .tif, et ca m'ouvre job.exe avec mon fichier .tif. Si je double clique sur un second fichier .tif et ce sans fermer Job.exe, ce second fichier .tif est ouvert dans la meme fenetre job.exe que le premier, et ce sur la même instance.

    Avec les limitations sur les chaines de caractères et windows, je ne peux pas avoir une variable strReprodeskParam avec un nbre de caractères illimité.

    ce que j'ai éventuellement pensé, mais ca ne marche pas bien, c'est de boucler sur le code que j'ai ennoncé au premier post, de facon à n'avoir qu'un seul chemin d'accès dans la variable strReprodeskParam, et donc en gros, tant qu'il y a des fichiers dans un répertoire, mon appli boucle sur ces fichiers, et me lance autant de fois que necessaire Job.exe, comme ca si j'ai tous mes fichiers dans mon appli.

    En vb, cette solution fonctionne, mais en .net je n'arrive pas à la refaire.

    En vb, mon code était :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell Loc_Reprodesk & " " & l_argslist, vbNormalFocus
    ou Loc_Reprodesk = c:/ocerd/job.exe
    l_arglist = chemin d'accès vers mon fichier.

    Alors question :

    Est ce que la commande vb Shel() est identique à celle de .net ?

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    oui j'allais d'ailleurs te le proposer vu que job.Exe s'occupe d'ouvrir les fichiers dans le meme processus
    donc pas besoin d'appeler l'exe, mais juste les fichiers chacun leur tour

    j'ai déjà testé shell en .net et ca marche bien en théorie, pour la syntaxe, l'intellisense te l'explique ...

    shell("http://monsite.fr") ouvre le navigateur par défaut avec le site
    shell("mailto:adr@mail.com") ouvre le mailreader par défaut avec un nouveau mail
    shell("chemin\fichier.doc") ouvre word
    etc...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/01/2010, 21h27
  2. Envoi Mail Systems.Diagnostic.Process
    Par olibara dans le forum C#
    Réponses: 2
    Dernier message: 09/09/2008, 11h15
  3. [C#] System.Diagnostics.Process et resources
    Par vince3320 dans le forum C#
    Réponses: 5
    Dernier message: 06/05/2008, 16h04
  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