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"); }