只允许winform打开一个实例,并且让这实例重新获取焦点

  static class Program
{
[DllImport(
"User32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);

[DllImport(
"User32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
private const int WS_SHOWNORMAL = 1;



/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(
false);
System.Diagnostics.Process[] name
= System.Diagnostics.Process.GetProcessesByName(System.Diagnostics.Process.GetCurrentProcess().ProcessName);
if (name.Length > 1)
{
MessageBox.Show(
"应用程序已启动,请检查!如果没启动请重启计算机");
ShowWindowAsync(name[
0].MainWindowHandle, WS_SHOWNORMAL);
SetForegroundWindow(name[
0].MainWindowHandle);
}
else
{

Application.Run(
new FrmLogin());

}
}
}

  

原文地址:https://www.cnblogs.com/yannis/p/2117321.html