Любопытно, когда кто-то проголосовал за этот код в качестве решения для running only a single instance of an application, не указав, почему они это сделали.Обеспечение одного экземпляра приложения с помощью WINAPI?
int hWnd = FindWindow(null, "My Application Title");
if (hWnd > 0) //If found
{
Process.GetCurrentProcess().WaitForExit(600);
try
{
SetForegroundWindow(hWnd); //Activate it
ShowWindow(hWnd, 9);
Process.GetCurrentProcess().Kill();
}
catch (Exception ex)
{
//write to log
}
}
//Import the FindWindow API to find our window
[DllImport("User32.dll")]
public static extern int FindWindow(String ClassName, String WindowName);
//Import the SetForeground API to activate it
[DllImport("User32.dll")]
public static extern IntPtr SetForegroundWindow(int hWnd);
//Import the ShowWindow API to show it
[DllImport("User32.dll")]
public static extern bool ShowWindow(int hWnd, int nCmdShow);
Может ли кто-нибудь быть добрым, чтобы объяснить мне недостатки этого метода? Благодарю.
'Process.GetCurrentProcess(). WaitForExit' ... Что? – SLaks
@SLaks: просто проверить, закрыт ли другой экземпляр. –
@opatachibueze: А? Нет, нет. – SLaks