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