码迷,mamicode.com
首页 > Windows程序 > 详细

C#防止程序多次运行

时间:2014-12-02 22:22:19      阅读:310      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   ar   color   sp   on   

经过我的测试,还比较好用,但是有个问题,如果不注销,用另一个用户进入,则程序不能判断出已运行。所以只限于用在单用户环境,还是不太完美。

class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            //防止程序多次运行
            if (!OneInstance.IsFirst("MyTest"))
            {
                Console.WriteLine("警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!");
                return;
            }
            Console.WriteLine("正在运行中");
            Console.ReadLine();
        }
    }
    public static class OneInstance
    {
        ///<summary>
        ///判断程序是否正在运行 
        ///</summary>
        ///<param name="appId">程序名称</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 
            );
    }

出处:http://blog.csdn.net/lanman/article/details/3648455

C#防止程序多次运行

标签:des   style   blog   http   io   ar   color   sp   on   

原文地址:http://www.cnblogs.com/mq0036/p/4138461.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!