C#执行程序禁用重复打开功能

第一种方式:

在网上查到一种方法,通过获取电脑任务管理器内当前执行程序是否存在,从而判断当前执行程序是否运行,并在第二次重复打开时报警提示已经运行,这种方式,个人觉得不怎么好用。代码如下:

        //加载窗体时判断当前程序是否已经打开
        private void Test_Load(object sender, EventArgs e)
        {
            System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName("执行程序名称");//获取指定的进程名
            
            if (myProcesses.Length > 1) //如果可以获取到知道的进程名则说明已经启动
            {
                MessageBox.Show("程序已启动!");

                Application.Exit();//关闭系统
            }
        }

第二种方式:

在 Program.cs文件中增加代码,判断是否已经启动,代码如下:

 //static class Program
    //{
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        //[STAThread]
        //static void Main()
        //{
            bool isRuned;

            System.Threading.Mutex mutex = new System.Threading.Mutex(true, "OnlyRunOneInstance", out isRuned);

            if (isRuned)
            {
                //Application.EnableVisualStyles();
                //Application.SetCompatibleTextRenderingDefault(false);
               // Application.Run(new Test());
                mutex.ReleaseMutex();
            }
            else
            {
                MessageBox.Show("程序已启动!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
    }

其中改为标注的都是原本自带的部分,未标注的是增加部分,重复打开后结果如下图:

原文地址:https://www.cnblogs.com/LcVong/p/15460161.html