Восстановление другого экземпляра того же приложения из трея при запуске - PullRequest
0 голосов
/ 27 сентября 2018

Я создал программу, которая при сворачивании скрывается за иконками в трее.и он может запустить только один экземпляр, и когда вы попытаетесь запустить его снова, он должен показать и активировать текущий экземпляр.мой код просто выглядит следующим образом.

[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);
   }
}

, и этот код прекрасно работает, когда окно видно и неактивно, но когда в программе скрыты значки в трее, ничего не происходит.что я делаю не так?Заранее спасибо.

...