第一种方式:
在网上查到一种方法,通过获取电脑任务管理器内当前执行程序是否存在,从而判断当前执行程序是否运行,并在第二次重复打开时报警提示已经运行,这种方式,个人觉得不怎么好用。代码如下:
//加载窗体时判断当前程序是否已经打开 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); } } }
其中改为标注的都是原本自带的部分,未标注的是增加部分,重复打开后结果如下图: