c#裏斷定同一個exe是否已經被執行
用法:
public static bool IsHasRunningInstance(RunningType runningType, string fileName)
{
bool isRunning = true;
if (runningType == RunningType.ProcessType)
{
Process current = GetCurrentProcess(fileName);
if (current != null)
{
isRunning = true;
}
else
{
isRunning = false;
}
}
else
{
bool isCreateNew;
string myAppName = Process.GetCurrentProcess().ProcessName;
Mutex m = new Mutex(false, myAppName, out isCreateNew);
isRunning = !(isCreateNew);
}
return isRunning;
}
public static void ShowRunningInstance(string fileName)
{
Process current = GetCurrentProcess(fileName);
//确保窗口没有被最小化或最大化
ShowWindowAsync(current.MainWindowHandle, 1);
//设置真实例程为foreground window
SetForegroundWindow(current.MainWindowHandle);
}
public enum RunningType
{
MutexType,
ProcessType
}
用法:
bool isRunning = IsHasRunningInstance(RunningType.ProcessType, fileName);
if (isRunning)
{
ShowRunningInstance(fileName);
}