Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
972 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Verifier l'état de la fenêtre d'un exe en C #

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Verifier l'état de la fenêtre d'un exe en C #

n°2287497
tatsusheva
Posté le 07-09-2016 à 15:40:23  profilanswer
 

Bonjour tout le monde,  
 
je suis en train de faire une application qui aura pour but d'utiliser des applications externes(exe) du genre MS Word,Excel, Calculatrice etc. De ce fait, j'ai réussi à ouvrir les applications mais lorsque les fenêtres de ces applications sont fermées je ne peux pas ramener la fenetre. Du coup, j'ai essayé de reproduire quelque chose avec un bout de code en le mettant dans une classe et l'appeler plus tard.  
Le but de cette classe sera : Lorsque je lance un exe un bouton se crée automatiquement dans un FlowPanel et lorsque la fenetre de l'exe est fermée, le bouton disparait.  
Mon soucis c'est qu'il y a une boucle dans le timer. Je ne sais pas comment l'arreter.  
Voici ce que j'ai essayé:  

Code :
  1. private static WINDOWPLACEMENT GetPlacement(IntPtr hwnd)
  2.         {
  3.             WINDOWPLACEMENT placement = new WINDOWPLACEMENT();
  4.             placement.length = Marshal.SizeOf(placement);
  5.             GetWindowPlacement(hwnd, ref placement);
  6.             return placement;
  7.         }
  8.         [DllImport("user32.dll", SetLastError = true)]
  9.         [return: MarshalAs(UnmanagedType.Bool)]
  10.         internal static extern bool GetWindowPlacement(
  11.             IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);
  12.         internal enum ShowWindowCommands : int
  13.         {
  14.             Hide = 0,
  15.             Normal = 1,
  16.             Minimized = 2,
  17.             Maximized = 3,
  18.         }
  19.         [Serializable]
  20.         [StructLayout(LayoutKind.Sequential)]
  21.         internal struct WINDOWPLACEMENT
  22.         {
  23.             public int length;
  24.             public int flags;
  25.             public ShowWindowCommands showCmd;
  26.             public System.Drawing.Point ptMinPosition;
  27.             public System.Drawing.Point ptMaxPosition;
  28.             public System.Drawing.Rectangle rcNormalPosition;
  29.         }
  30.         [DllImport("user32.dll" )]
  31.         private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
  32.         public static void MaximizeWindowIfMinized(string windowName,Timer tim,FlowLayoutPanel f1)
  33.         {
  34.             tim.Start();
  35.             Button btn = new Button();
  36.             Process[] procs = Process.GetProcesses();
  37.             try
  38.             {
  39.                 foreach (Process proc in procs)
  40.                 {
  41.                     if (proc.ProcessName.Contains(windowName))
  42.                     {
  43.                         var placement = GetPlacement(proc.MainWindowHandle);
  44.                         Console.WriteLine(placement.showCmd.ToString());
  45.                         if (placement.showCmd == ShowWindowCommands.Normal)
  46.                         {
  47.                             btn = new Button();
  48.                           //  btn.Width = 150;
  49.                           //  btn.Height = 120;
  50.                             f1.Controls.Add(btn);
  51.                          //   btn.Left = 500;                           
  52.                           //  btn.Visible = true;
  53.                             // btn.Click += button1_Click(windowName);
  54.                             tim.Stop();
  55.                         }
  56.                         tim.Start();
  57.                          if (placement.showCmd == ShowWindowCommands.Hide)
  58.                         {
  59.                             btn.Visible = false;
  60.                             tim.Stop();
  61.                         }
  62.                     }
  63.                 }
  64.             }
  65.             catch
  66.             {
  67.             }
  68.         }

mood
Publicité
Posté le 07-09-2016 à 15:40:23  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Verifier l'état de la fenêtre d'un exe en C #

 

Sujets relatifs
Revenir au CAide sur pointeurs et array en C
un état avec 02 bands detailProg C d'un LCD
Problème C# récupération de donnée[C#] Tableaux croisés dynamiques et Open XML
piloter la fenetre windows en vba[C#] Un bon livre ?
Aide code C++ faire un rectangle ( noob )Probleme avec l'exportation de mes programmes en C++
Plus de sujets relatifs à : Verifier l'état de la fenêtre d'un exe en C #


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR