using System; using System.Collections.Generic; using System.Windows.Forms; using System.Runtime.InteropServices; namespace RTTPrj { static class Program { [DllImport("coredll.Dll")] private static extern int GetLastError(); [DllImport("coredll.Dll")] private static extern int ReleaseMutex(IntPtr hMutex); [DllImport("coredll.Dll")] private static extern IntPtr CreateMutex(SECURITY_ATTRIBUTES lpMutexAttributes, bool bInitialOwner, string lpName); [StructLayout(LayoutKind.Sequential)] public class SECURITY_ATTRIBUTES { public int nLength; public int lpSecurityDescriptor; public int bInheritHandle; } const int ERROR_ALREADY_EXISTS = 0183; /// /// The main entry point for the application. /// [MTAThread] static void Main() { #region Api_Call CreateMutex; IntPtr hMutex; hMutex = CreateMutex(null, false, "RTTPrj"); if (GetLastError() != ERROR_ALREADY_EXISTS) { Application.Run(new Form1()); } else { MessageBox.Show("Allow run a program simultaneously!!"); ReleaseMutex(hMutex); } #endregion } } }