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 :

Lancer un processus en arrière-plan


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 72
    Points : 51
    Points
    51
    Par défaut Lancer un processus en arrière-plan
    Bonjour,

    Le programme que je réalise actuellement en C# lance de nombreux processus de la manière que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process.Start("programme.exe", "arguments");
    Les fenêtres liées aux processus que je lance s'ouvrent au premier plan.
    L'exécution du programme dure longtemps et ouvre des centaines de fenêtres différentes.
    L'utilisateur est donc très gêné par l'ouverture intempestive de ces fenêtres...

    Ma question est donc la suivante : Existe t-il un moyen de dire à un processus de se lancer en arrière-plan ?

    Merci d'avance !

  2. #2
    Membre actif
    Avatar de Proteus91
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 150
    Points : 275
    Points
    275
    Par défaut Hello
    Hello,

    Est ce que tu peux tester ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                Process MyProcess = new Process();
                MyProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                MyProcess.StartInfo.FileName = "RACINE ET FICHIER";
                MyProcess.StartInfo.Arguments = "ARGUMENTS";
                MyProcess.Start();
    Normalement ca devrai marcher.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 72
    Points : 51
    Points
    51
    Par défaut
    Merci Proteus mais non ce n'est pas tout à fait ce que je veux.
    Certes avec ce code les fenêtres ne gêneraient plus l'utilisateur, mais il ne pourrait pas non plus les voir s'il le voulait, car elles sont cachées.
    Or je veux qu'elles soient en arrière-plan, et pas cachées.

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    Dans ce cas, tu peux utiliser le style Minimized au lieu de Hidden. L'utilisateur pourra les faire apparaître.
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    MyProcess.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;

    Pour les mettre en arrière plan ce serait vite plus compliqué je pense...

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 72
    Points : 51
    Points
    51
    Par défaut
    Oui c'est parfait
    J'avais déjà vu cette propriété, mais je pensais qu'elle ne ferait que changer la taille de la fenêtre.
    J'aurais dû essayer, car en plus de la redimensionner (le plus petit possible), elle ne la fait pas apparaître au premier-plan.
    Merci binoo

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 72
    Points : 51
    Points
    51
    Par défaut
    Je reviens vers vous car je me suis rendu compte que mon problème n'était pas tout à fait réglé...
    En fait, la propriété Minimized ne correspond pas tout à fait à ce que je recherche... Certes, les fenêtres n'apparaissent plus au milieu de l'écran, mais l'utilisateur perd quand même le focus de la fenêtre sur laquelle il se trouvait.
    Quelqu'un a une idée ?

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 72
    Points : 51
    Points
    51
    Par défaut
    je n'ai toujours pas résolu à mon problème, qui est de trouver comment lancer un processus en arrière-plan sans que l'utilisateur perde le focus de la fenêtre sur laquelle il travaille.
    Merci d'avance !

  8. #8
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Points : 4 574
    Points
    4 574
    Par défaut
    Bonjour,

    Peut-être que ces deux discussions résoudront ton problème.

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 72
    Points : 51
    Points
    51
    Par défaut
    Merci pour ta réponse, Jean-Michel Ormes. Malheureusement :
    - La solution de la première discussion est celle que j'utilise actuellement. La propriété Hidden cache les processus que je lance mais l'utilisateur perd le focus...
    - Le tutoriel est intéressant mais mon application est une application console...

  10. #10
    Membre habitué Avatar de swif79
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 169
    Points
    169
    Par défaut
    Bonjour,

    pour çà, il faut utiliser l'API ShellExecute qui te donne accès à une gestion plus fine du type d'apparition de ta fenêtre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
     
    public enum ShowCommands : int
            {
                SW_HIDE = 0,
                SW_SHOWNORMAL = 1,
                SW_NORMAL = 1,
                SW_SHOWMINIMIZED = 2,
                SW_SHOWMAXIMIZED = 3,
                SW_MAXIMIZE = 3,
                SW_SHOWNOACTIVATE = 4,
                SW_SHOW = 5,
                SW_MINIMIZE = 6,
                SW_SHOWMINNOACTIVE = 7,
                SW_SHOWNA = 8,
                SW_RESTORE = 9,
                SW_SHOWDEFAULT = 10,
                SW_FORCEMINIMIZE = 11,
                SW_MAX = 11
            }
     
            [DllImport("shell32.dll")]
            static extern IntPtr ShellExecute(
                IntPtr hwnd,
                string lpOperation,
                string lpFile,
                string lpParameters,
                string lpDirectory,
                ShowCommands nShowCmd);
     
    ShellExecute(IntPtr.Zero, "open", "notepad.exe", "", "", ShowCommands.SW_SHOWMINNOACTIVE);

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 72
    Points : 51
    Points
    51
    Par défaut
    Merci swif79, je vais essayer ça

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

Discussions similaires

  1. Lancer sous la console dos un processus en arrière plan.
    Par ziad.shady dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 25/10/2009, 14h44
  2. lancer un formulaire en arrière plan
    Par duaner dans le forum C#
    Réponses: 3
    Dernier message: 25/09/2007, 11h11
  3. comment lancer une fenètre en arrièr plan
    Par moon93 dans le forum wxPython
    Réponses: 2
    Dernier message: 16/07/2007, 09h25
  4. Lancer des processus en arrière plan
    Par momeftah dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 01/05/2007, 18h50
  5. Réponses: 19
    Dernier message: 27/04/2007, 15h25

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