誰かがなぜこのコードを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