启动后从托盘还原同一应用程序的其他实例

时间:2018-09-27 07:29:29

标签: c# winforms process showwindow

我创建了一个程序,该程序在最小化时将自身隐藏在任务栏图标上。并且它只能运行一个实例,当您尝试再次运行它时,它应该显示并激活当前实例。我的代码看起来像这样。

[DllImport("User32.dll")]
private static extern bool SetForegroundWindow(IntPtr handle);
[DllImport("User32.dll")]
private static extern bool ShowWindow(IntPtr handle, int nCmdShow);

[STAThread]
static void Main()
{
  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);

  if(isRunningAlready())
   {
       string exe_name = AppDomain.CurrentDomain.FriendlyName.Replace(".exe", "").Replace(".EXE", ""
       Process[] procList = Process.GetProcessesByName(exe_name);
       BringProcessToFront(procList)
       return;
   }
   Application.Run(new MainForm());
}


public static void BringProcessToFront(System.Diagnostics.Process[] processes)
{
   foreach (System.Diagnostics.Process process in processes)
   {
       IntPtr handle = process.MainWindowHandle;
       ShowWindow(handle, 1);
       SetForegroundWindow(handle);
   }
}

,当窗口可见且处于非活动状态时,此代码工作正常,但在程序中隐藏在任务栏图标中的功能不起作用。我做错了什么? 预先感谢。

0 个答案:

没有答案