C#里断定同一个exe文件是否已经被执行

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值