1. 程式人生 > >防止程式多次執行(呼叫DLL)

防止程式多次執行(呼叫DLL)

#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;
   }

   [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