zoukankan      html  css  js  c++  java
  • C# 禁止windows程序重复运行的两种基本方法

    一般的如果运行一个软件、让他处于运行状态,然后我们再去打开这个程序时就会提示我们
    “程序已启动或者不能重复启动此程序”,比如QQ对战平台 ,就限制一台机子启动两个QQ对
    战平台,那么他在C#中是如何实现的呢?

    一般有两种方法,我是用的是第一种

    方法1:

    在项目的第一个窗体的启动事件中 如form1_load() 中添加如下语句
    =================================这是什么分割线====================================

         #region 判断系统是否已启动

         System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName("这里是你的程序进程名");//获取指定的进程名  
                if (myProcesses.Length > 1) //如果可以获取到知道的进程名则说明已经启动
                {
                    MessageBox.Show("程序已启动!");
                    Application.Exit();              //关闭系统
                }          

        #endregion
    ===================================================================================
           好了 这样就可以达到防止用户第二次启动此程序的目的了
           当然你也可以把它编辑成一个类 或生成一个dll文件 调用它。


    方法2.

    在项目的启动引导文件 Program.cs中加入判断语句

    ====================================这是什么分割线===============================

    using System.Linq;
           using System.Windows.Forms;

    namespace XiaoZhiSoft
    {
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                bool isRuned;
                System.Threading.Mutex mutex = new System.Threading.Mutex(true, "OnlyRunOneInstance", out isRuned);
                if (isRuned)
                {

                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new Form1());
                    mutex.ReleaseMutex();
                }
                else
                {
                    MessageBox.Show("程序已启动!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }
    }

    =============================================================================
    在C#中这两出代码都可以实现防止程序重复运行的目的,在vs2005 vs2008 测试通过!

  • 相关阅读:
    概述各种事务隔离级别发生的影响
    linux内核的经典书籍
    sso 登录,网页跳转的实现方式
    初探移动网站的架构和设计
    C# PrintDocument 打印
    .Text分页技术(1)分页的存储过程分析
    SQL2008使用CTE递归查询批量插入500万数据
    自己写的Web服务器
    OMCS 语音视频框架
    ESFramework4.x
  • 原文地址:https://www.cnblogs.com/panshengqiang/p/2864595.html
Copyright © 2011-2022 走看看