Ayuda Instancia unica en C# windows Forms

Publicado en 'Programación' por joel094, 23 Mar 2015.





  1. joel094

    joel094 Miembro frecuente

    Registro:
    14 Oct 2012
    Mensajes:
    213
    Likes:
    7




    Buenas tardes necesito su ayua lo q pasa es que al ejecutar un puqeño programa solo debe ejecutarse una vez y si esta en segundo plano al intentar abrirlo denuevo me debe abrir el q ya esta abierto lo que eh logrado hasta el momento es que no me deje abrir mas de uno pero no se como mostrar el que ya se ecneuntra activo (en segundo plano) espero su ayuda muchas gracias a todos.

    Código:
     public static bool FirstInstance
            {
                get
                {
                    bool created;
                    string name = Assembly.GetEntryAssembly().FullName;
                    Mutex mutex = new Mutex(true, name, out created);
                    return created;
                }
            }
    Código:
     static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                if (Config.FirstInstance)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new LizBoa());
                }
                else
                {
                    MessageBox.Show("Aplicacion se encuentra ejecutandose .");
                }
            }
        }
     


  2. gnox

    gnox Miembro maestro

    Registro:
    3 Ene 2013
    Mensajes:
    794
    Likes:
    252
    Código:
    private static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);
    
    
    private struct WINDOWPLACEMENT
    {
      public int length;
      public int flags;
      public int showCmd;
      public System.Drawing.Point ptMinPosition;
      public System.Drawing.Point ptMaxPosition;
      public System.Drawing.Rectangle rcNormalPosition;
    }
    
    public void RestoreFromMin(Form form)
    {
      const int WPF_RESTORETOMAXIMIZED = 0x2;
      WINDOWPLACEMENT placement = new WINDOWPLACEMENT();
      placement.length = Marshal.SizeOf(placement);
      GetWindowPlacement(form.Handle, ref placement);
    
      if ((placement.flags & WPF_RESTORETOMAXIMIZED) == WPF_RESTORETOMAXIMIZED)
      form.WindowState = FormWindowState.Maximized;
      else
      form.WindowState = FormWindowState.Normal;
    }
    
     
    A joel094 le gustó este mensaje.
  3. joel094

    joel094 Miembro frecuente

    Registro:
    14 Oct 2012
    Mensajes:
    213
    Likes:
    7
    wow muchas gracias peor me podrias ayudar soy algo nuevo esto de manejar instancias
     
  4. Joun

    Joun Miembro maestro

    Registro:
    17 Feb 2011
    Mensajes:
    814
    Likes:
    80
    El foro e spara ayudar, no para hacerte la tarea.
     
  5. joel094

    joel094 Miembro frecuente

    Registro:
    14 Oct 2012
    Mensajes:
    213
    Likes:
    7
    Disculpe usted pero no es tarea pregunte antes de opinar y bueno si le pido ayuda es porque soy nuevo tratando con instancias entiendo el codigo pero no del todo es por eso que le pedi explicacion