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

  • 相关阅读:
    动态库的链接和链接选项-L,-rpath-link,-rpath
    SSL/TLS 握手过程详解
    数字证书及CA介绍
    sendto函数的坑
    如何捕捉并分析SIGSEGV的现场
    gdb进程调试,多进程调试
    linux下的守护进程daemon
    winform的水印TextBox
    Winform中的TextBox的小技巧
    WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptRes
  • 原文地址:https://www.cnblogs.com/littleCode/p/3848182.html
Copyright © 2020-2023  润新知