防止程式多次執行(呼叫DLL)
阿新 • • 發佈:2019-02-17
#region ******************* 防止程式多次執行 **************************
public abstract class OneInstance
{
/// <summary>
/// 用來判斷一個指定的程式是否正在執行
/// </summary>
/// <param >程式名稱,長一點比較好,防止有重複</param>
/// <returns>如果程式是第一次執行返回True,否則返回False</returns>
public static bool IsFirst(string appId)
{
bool ret=false;
if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero)
{
CreateMutex(IntPtr.Zero,0,appId);
ret=true;
}
return ret;
}
public abstract class OneInstance
{
/// <summary>
/// 用來判斷一個指定的程式是否正在執行
/// </summary>
/// <param >程式名稱,長一點比較好,防止有重複</param>
/// <returns>如果程式是第一次執行返回True,否則返回False</returns>
public static bool IsFirst(string appId)
{
bool ret=false;
if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero)
{
CreateMutex(IntPtr.Zero,0,appId);
ret=true;
}
return ret;
}
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
private static extern IntPtr OpenMutex(
uint dwDesiredAccess, // access
int bInheritHandle, // inheritance option
string lpName // object name
);
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
private static extern IntPtr CreateMutex(
IntPtr lpMutexAttributes, // SD
int bInitialOwner, // initial owner
string lpName // object name
);
}
#endregion