让你的程序只能运行一个实例
2008-05-31 17:06
351 查看
先说一个循环系统进程的方法吧,
//首先取得你的程序当前进程
Process current = Process.GetCurrentProcess();
//用你进程的名字到系统进程中取
Process[] processes = Process.GetProcessesByName(current.ProcessName);
//真的取到了多个就循环他们
foreach (Process process in processes)
{
//因为即使进程名一致但是进程ID仍然会不同,如果在你系统里存在两个你的程序了
if (process.Id != current.Id)
{
if (process.MainModule.FileName
== current.MainModule.FileName)
{
//经过多个判断可以确定你程序的进程在系统中已经有存在了,那么就关掉它吧
MessageBox.Show("程序已经运行!", Application.ProductName,
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
Application.Exit();
return;
}
}
}
再说另一种使用互斥对象的方法,
//这里第2个参数是保证你程序唯一性的而一个字符串
static Mutex mutex = new Mutex(false, "f880a127-9d21-4907-aa83-6041dc0faa4a");
if (!mutex.WaitOne(1000,false)) //等待1秒, 如果有相同实例运行则给用户提示
{
MessageBox.Show("程序已在运行,如果仍有问题,请检查是否已在系统进程中运行。");
return;
}
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
finally { mutex.ReleaseMutex(); }
总结完毕.
//首先取得你的程序当前进程
Process current = Process.GetCurrentProcess();
//用你进程的名字到系统进程中取
Process[] processes = Process.GetProcessesByName(current.ProcessName);
//真的取到了多个就循环他们
foreach (Process process in processes)
{
//因为即使进程名一致但是进程ID仍然会不同,如果在你系统里存在两个你的程序了
if (process.Id != current.Id)
{
if (process.MainModule.FileName
== current.MainModule.FileName)
{
//经过多个判断可以确定你程序的进程在系统中已经有存在了,那么就关掉它吧
MessageBox.Show("程序已经运行!", Application.ProductName,
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
Application.Exit();
return;
}
}
}
再说另一种使用互斥对象的方法,
//这里第2个参数是保证你程序唯一性的而一个字符串
static Mutex mutex = new Mutex(false, "f880a127-9d21-4907-aa83-6041dc0faa4a");
if (!mutex.WaitOne(1000,false)) //等待1秒, 如果有相同实例运行则给用户提示
{
MessageBox.Show("程序已在运行,如果仍有问题,请检查是否已在系统进程中运行。");
return;
}
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
finally { mutex.ReleaseMutex(); }
总结完毕.
相关文章推荐
- 使Qt 程序只能运行一个实例的3种方法
- 让程序只能运行一个实例(来自ccrun)
- C# WINFORM判断程序是否运行,且只能运行一个实例
- MFC程序只能运行一个实例
- 程序只能运行一个实例方法
- FCL小应用系列-----------如何使得程序只能有一个实例运行?
- C#只能运行一个实例程序的方法
- 使程序只能运行一个实例
- 【转】C#只能运行一个实例程序的方法
- c# 程序只能运行一个实例
- 让程序只能运行一个实例(来自ccrun)
- C#只能运行一个实例程序的方法
- c# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.
- windows mobile 只能运行一个程序实例
- 只能运行一个程序实例的两种方法对比
- qt编写一个只能运行单个实例的程序,不用Windows API
- 让程序只能被运行一个实例
- c# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.
- C# WINFORM判断程序是否运行,且只能运行一个实例
- 怎样让我的MFC程序只能运行一个实例?