Le programme en cours d'exécution C # en garde toujours un seul ouvert

Méthode 1: si le programme est déjà en cours d'exécution, affichez directement le programme en cours d'exécution

// Introduisez 3 espaces de noms

using System.Runtime.InteropServices;
en utilisant System.Diagnostics;
using System.Reflection;

 

namespace MyWindow
{     classe statique Program     {         [DllImport ("User32.dll")]         privé statique extern bool ShowWindowAsync (IntPtr hWnd, int cmdShow);         [DllImport ("User32.dll")]         booléen externe statique privé SetForegroundWindow (IntPtr hWnd);         private const int WS_SHOWNORMAL = 1;         /// <summary>         /// 应用 程序 的 主 入口 点。         /// </summary>         [STAThread]         static void Main ()         {             Application.EnableVisualStyles ();             Application.SetCompatibleTextRenderingDefault (false);














            Instance de processus = RunningInstance ();
            if (instance == null)
            {                 Form1 frm = new Form1 ();                 Application.Run (nouveau Form1 ());             }             else             {                 HandleRunningInstance (instance);             }         }







        /// <summary>
        /// Récupère l'instance en cours d'exécution, l'instance qui n'est pas en cours d'exécution renvoie null;
        /// </summary>
        public static Process RunningInstance ()
        {             Process current = Process.GetCurrentProcess ();             Process [] processus = Process.GetProcessesByName (current.ProcessName);             foreach (Processus de processus dans les processus)             {                 if (process.Id! = Current.Id)                 {                     if (Assembly.GetExecutingAssembly (). Location.Replace ("/", "\\" ) == current.MainModule.FileName)                     {                         processus de retour;                     }                 }











            }
            return null;
        }

        /// <summary>
        /// Afficher les programmes en cours d'exécution.
        /// </summary>
        public static void HandleRunningInstance (Process instance)
        {             ShowWindowAsync (instance.MainWindowHandle, WS_SHOWNORMAL); // Display, vous pouvez commenter             SetForegroundWindow (instance.MainWindowHandle); // Mettez-le sur le front-end         }     } }




 

Méthode 2: si le programme est déjà en cours d'exécution, il             affiche uniquement "il y a un programme en cours d'exécution"
            mutex System.Threading.Mutex;
bool isNew;
            mutex = new System.Threading.Mutex (true, "myproject", out isNew);
            si (isNew)
            {                 Application.EnableVisualStyles ();                 Application.SetCompatibleTextRenderingDefault (false);                 Application.Run (new Form1 ());             }             else             {                 MessageBox.Show ("Ce programme est déjà en cours d'exécution");             }







Je suppose que tu aimes

Origine blog.csdn.net/Hat_man_/article/details/115084923
conseillé
Classement