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 exécutable en précisant l'endroit de la fenêtre ainsi que sa taille


Sujet :

C#

  1. #1
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut Lancer un exécutable en précisant l'endroit de la fenêtre ainsi que sa taille
    Bonsoir,

    Débutant en C# mais ayant de bonnes connaissances en Delphi, je suis entrain de me familiariser avec le langage pour reproduire de simple application ...
    Actuellement, je cherche à ouvrir le bloc note (ça c'est fait) en spécifiant l'endroit où doit se positionner la fenêtre ainsi que sa taille.
    Bien entendu, c'est sur ces 2 passages que je bloque (j'ai fait des recherches sur le forum, et je n'ai pas trouvé ... à moins que je n'ai pas bien cherché )

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private void BtnNotePad_Click(object sender, System.EventArgs e)
    {
    	// Instance de la classe Process
    	  Process proc = new Process();
    	// Nom de l'executable à lancer
    	  proc.StartInfo.FileName = "notepad.exe";
    	// Arguments à passer à l'exécutable à lancer
    	  proc.StartInfo.Arguments="C:\\Test\\Test.txt";
    	// Démarrage du processus
    	  proc.Start() ;
    	// On libère les ressources dont on n'a plus besoin.
    	  proc.Close(); // Attention Close ne met pas fin au processus.
    }
    Si quelqu'un à une piste ...
    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Bonjour,

    Après des recherches encore et encore, j'ai réussi à faire ce que je voulais ...
    Voici le 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    class Win32
    {
      [DllImport("user32.dll", EntryPoint = "SetWindowPos")]
      public static extern IntPtr SetWindowPos
      (
        IntPtr hWnd,
        IntPtr hWndInsertAfter,
        int X,
        int Y,
        int cx,
        int cy,
        uint uFlags
      );
     
      public const uint SWP_ASYNCWINDOWPOS = 0x4000;
      public const uint SWP_DEFERERASE = 0x2000;
      public const uint SWP_DRAWFRAME = 0x0020;
      public const uint SWP_FRAMECHANGED = 0x0020;
      public const uint SWP_HIDEWINDOW = 0x0080;
      public const uint SWP_NOACTIVATE = 0x0010;
      public const uint SWP_NOCOPYBITS = 0x0100;
      public const uint SWP_NOMOVE = 0x0002;
      public const uint SWP_NOOWNERZORDER = 0x0200;
      public const uint SWP_NOREDRAW = 0x0008;
      public const uint SWP_NOREPOSITION = 0x0200;
      public const uint SWP_NOSENDCHANGING = 0x0400;
      public const uint SWP_NOSIZE = 0x0001;
      public const uint SWP_NOZORDER = 0x0004;
      public const uint SWP_SHOWWINDOW = 0x0040;
     
      public const int HWND_TOP = 0;
      public const int HWND_BOTTOM = 1;
      public const int HWND_TOPMOST = -1;
      public const int HWND_NOTOPMOST = -2;
    }
     
    private void BtnLancerNotePad_Click(object sender, EventArgs e)
    {
      // Instance de la classe Process
      Process proc = new Process();
      // Nom de l'executable à lancer
      proc.StartInfo.FileName = "notepad.exe";
      // Arguments à passer à l'exécutable à lancer
      proc.StartInfo.Arguments = "C:\\Test\\Test.txt";
      // Démarrage du processus
      proc.Start();
      proc.WaitForInputIdle(); // Nécessaire (conseillé dans API) : attend que le Processus soit inactif
      IntPtr HandleProgramme = proc.MainWindowHandle;
      // Lancement de Notepad :
      // Toujours devant (HWND_TOPMOST)
      // A 100 pixels du bord gauche de l'écran  
      // A 100 pixels du bord haut de l'écran
      // Taille de 500 pixels en X
      // Taille de 500 pixels en Y
      // Affichage Normal de la fenêtre (Win32.SWP_SHOWWINDOW)
      Win32.SetWindowPos(HandleProgramme,(IntPtr)Win32.HWND_TOPMOST,100,100,500,500,Win32.SWP_SHOWWINDOW);
      // On libère les ressources dont on n'a plus besoin.
      proc.Close(); // Attention Close ne met pas fin au processus.
    }
    J'espère que ça servira à certain
    A+

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/08/2006, 12h33
  2. [Système] Problème pour lancer un exécutable
    Par zackrel dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2006, 08h21
  3. [Unix] Lancer un exécutable
    Par Flo2 dans le forum Cobol
    Réponses: 2
    Dernier message: 02/10/2005, 21h57
  4. [D7] Comment lancer un exécutable à distance ?
    Par raoulmania dans le forum Web & réseau
    Réponses: 10
    Dernier message: 20/09/2005, 18h47
  5. Lancer un exécutable en PL/SQL
    Par Doctor Z dans le forum PL/SQL
    Réponses: 23
    Dernier message: 01/02/2005, 14h51

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