Восстановление другого экземпляра того же приложения из трея при запуске
Я создал программу, которая при свернутом изображении скрывает себя в иконках трея и он может запустить только один экземпляр, и когда вы попытаетесь запустить его снова, он должен показать и активировать текущий экземпляр. мой код просто выглядит следующим образом.
[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);
}
}
и этот код прекрасно работает, когда окно видно и неактивно, но когда в программе скрыты значки в трее, ничего не происходит что я делаю не так? Заранее спасибо.