/// <summary>
 /// 檢查應用程式是否已執行
 /// </summary>
 /// <param name="checkRange">檢查範圍 : Global (同一主機所有使用者), Local (同一主機相同使用者)</param>
 /// <returns>是否已執行</returns>
 public static bool IsProcessExists(ProcessCheckRange checkRange)
 {
     var isCreated = false;
     var muteRange = "Global\\";
     switch (checkRange)
     {
         case ProcessCheckRange.Global:
             muteRange = "Global\\";
             break;
         case ProcessCheckRange.Local:
             muteRange = "Local\\";
             break;
     }
     var mutexName = Process.GetCurrentProcess().ProcessName;
     System.Threading.Mutex mutex = new System.Threading.Mutex(true, muteRange + mutexName, out isCreated);
     return isCreated;
 }
예제 #2
0
        /// <summary>
        /// 檢查應用程式是否已執行
        /// </summary>
        /// <param name="checkRange">檢查範圍 : Global (同一主機所有使用者), Local (同一主機相同使用者)</param>
        /// <returns>是否已執行</returns>
        public static bool IsProcessExists(ProcessCheckRange checkRange)
        {
            var isCreated = false;
            var muteRange = "Global\\";

            switch (checkRange)
            {
            case ProcessCheckRange.Global:
                muteRange = "Global\\";
                break;

            case ProcessCheckRange.Local:
                muteRange = "Local\\";
                break;
            }
            var mutexName = Process.GetCurrentProcess().ProcessName;

            System.Threading.Mutex mutex = new System.Threading.Mutex(true, muteRange + mutexName, out isCreated);
            return(isCreated);
        }
        public static bool IsProcessing(ProcessCheckRange type)
        {
            string moduleName = Process.GetCurrentProcess().MainModule.ModuleName;
            string mutexRange = string.Empty;
            bool isCreated = false;

            switch (type)
            {
                case ProcessCheckRange.Global:
                default:
                    mutexRange = "Global\\";
                    break;
                case ProcessCheckRange.Local:
                    mutexRange = "Local\\";
                    break;
            }

            System.Threading.Mutex mutex = new System.Threading.Mutex(true, mutexRange + moduleName, out isCreated);

            return isCreated;
        }
예제 #4
0
        public static bool IsProcessing(ProcessCheckRange type)
        {
            string moduleName = Process.GetCurrentProcess().MainModule.ModuleName;
            string mutexRange = string.Empty;
            bool   isCreated  = false;

            switch (type)
            {
            case ProcessCheckRange.Global:
            default:
                mutexRange = "Global\\";
                break;

            case ProcessCheckRange.Local:
                mutexRange = "Local\\";
                break;
            }

            System.Threading.Mutex mutex = new System.Threading.Mutex(true, mutexRange + moduleName, out isCreated);

            return(isCreated);
        }
예제 #5
0
        public static bool IsProcessing(ProcessCheckRange type, out Mutex mutex)
        {
            //string moduleName = Process.GetCurrentProcess().MainModule.ModuleName;    //process name (會因改檔名而跟著變)
            string moduleName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
            string mutexRange = string.Empty;
            bool isCreated = false;

            switch (type)
            {
                case ProcessCheckRange.Global:
                default:
                    mutexRange = "Global\\";    //everyone 只能存在一個process
                    break;
                case ProcessCheckRange.Local:
                    mutexRange = "Local\\";     //只限定同使用者 只能存在一個process
                    break;
            }

            mutex = new System.Threading.Mutex(true, mutexRange + moduleName, out isCreated);

            return isCreated;
        }