1 static class Program 2 { 3 [System.Runtime.InteropServices.DllImport("coredll.Dll", SetLastError = true)] 4 private static extern int ReleaseMutex(IntPtr hMutex); 5 6 [System.Runtime.InteropServices.DllImport("coredll.Dll", SetLastError = true)] 7 private static extern IntPtr CreateMutex(string lpMutexAttributes, bool bInitialOwner, string lpName); 8 /// <summary> 9 /// 应用程序的主入口点。 10 /// </summary> 11 [MTAThread] 12 static void Main() 13 { 14 try 15 { 16 IntPtr hMutex = CreateMutex(null, false, "XXXXX"); 17 if (System.Runtime.InteropServices.Marshal.GetLastWin32Error() != 0183) 18 { 19 Application.Run(new FrmMain()); 20 } 21 else 22 { 23 MessageBox.Show("程序已经运行.", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1); 24 ReleaseMutex(hMutex); 25 } 26 } 27 catch (Exception) 28 { 29 30 MessageBox.Show("发生未知错误,程序退出!"); 31 Application.Exit(); 32 } 33 34 } 35 }