How to check if a WPF application is already running?
Possible Duplicate:
What is the correct way to create a single instance application?
How can I check if my application is already open? If my application is already running, I want to show it instead of opening a new instance.
[DllImport("user32.dll")]
private static extern Boolean ShowWindow(IntPtr hWnd, Int32 nCmdShow);
static void Main()
{
Process currentProcess = Process.GetCurrentProcess();
var runningProcess = (from process in Process.GetProcesses()
where
process.Id != currentProcess.Id &&
process.ProcessName.Equals(
currentProcess.ProcessName,
StringComparison.Ordinal)
select process).FirstOrDefault();
if (runningProcess != null)
{
ShowWindow(runningProcess.MainWindowHandle, SW_SHOWMAXIMIZED);
return;
}
}
方法2
static void Main()
{
string procName = Process.GetCurrentProcess().ProcessName;
// get the list of all processes by the "procName"
Process[] processes=Process.GetProcessesByName(procName);
if (processes.Length > 1)
{
MessageBox.Show(procName + " already running");
return;
}
else
{
// Application.Run(...);
}
}
public partial class App
{
private const string Guid = "250C5597-BA73-40DF-B2CF-DD644F044834";
static readonly Mutex Mutex = new Mutex(true, "{" + Guid + "}");
public App()
{
if (!Mutex.WaitOne(TimeSpan.Zero, true))
{
//already an instance running
Application.Current.Shutdown();
}
else
{
//no instance running
}
}
}
这里有一行代码可以为你做这个...
if (Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length > 1)
{
// Show your error message
}
链接地址: http://www.djcxy.com/p/51138.html
上一篇: 如何让我的应用程序单身应用程序?