如何確保我的應用程序的單個實例,並在嘗試打開第二個實例時將焦點設置爲該應用程序?如何強制執行我的應用程序的單個實例?
我想:
public partial class Form1 : Form {
[DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
public static extern
IntPtr FindWindow(String lpClassName, String lpWindowName);
[DllImport("USER32.DLL")]
public static extern
Boolean SetForegroundWindow(IntPtr hWnd);
private void Form1_Load(object sender, EventArgs e)
{
bool isRunning = Process.GetProcesses()
.Where(p => p.MainWindowTitle.Contains(Text))
.Count() > 1;
if (isRunning)
{
FocusWindow(Text);
Application.Exit();
}
}
public static void FocusWindow(string title)
{
SetForegroundWindow(FindWindow(null, title));
}
}
這不是重點應用。我怎樣才能解決這個問題?
你肯定FindWindow函數返回一個有效的HWND? – Tigran 2012-01-13 20:00:05
在啓動表單之前檢查Program.cs是否更有意義?用'count> 0'檢查進程名稱的實例。 – 2012-01-13 20:03:40
請參閱[C#中的單實例應用程序](http://blogs.msdn.com/b/tyler_whitney/archive/2005/11/28/497604.aspx) – LarsTech 2012-01-13 20:04:48