static void Main()
{
Process[] nInstance=System.Diagnostics.Process.GetProcessesByName("WindowsApplication1");
if (nInstance.Length>1)
return;
Application.Run(new Form1());
}
{
Process[] nInstance=System.Diagnostics.Process.GetProcessesByName("WindowsApplication1");
if (nInstance.Length>1)
return;
Application.Run(new Form1());
}
这跟以前有人用FindWindowsEx这个函数来查找自己程序窗口的标题是一样的,无法避免其他窗口的标题也是这个。解决办法:
使用创建互斥体的办法。详细情况参见VB版。
public static Process RunningInstance()
{
Process current = Process.GetCurrentProcess();
Process[] processes = Process.GetProcessesByName (current.ProcessName);
foreach (Process process in processes)
{
if (process.Id != current.Id)
{
if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName)
{
return process;
}
}
}
return null;
}