zoukankan      html  css  js  c++  java
  • C#代码实现,确保windows程序只有一个实例(instance)

    static class Program
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main()
    {
    //防止程序多次运行
    if (!OneInstance.IsFirst("GetPayInfo"))
    {
    MessageBox.Show("警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!", "程序错误提示:", MessageBoxButtons.OK, MessageBoxIcon.Stop);
    return;
    }

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
    }
    }

    // ******************* 防止程序多次执行 **************************
    public abstract 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;
    }
    /// <summary>
    /// 为现有的一个已命名互斥体对象创建一个新句柄
    /// </summary>
    /// <param name="dwDesiredAccess"></param>
    /// <param name="bInheritHandle">如希望子进程能够继承句柄,则为TRUE</param>
    /// <param name="lpName">要打开对象的名字</param>
    /// <returns></returns>
    [DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
    private static extern IntPtr OpenMutex(
    uint dwDesiredAccess, // access
    int bInheritHandle, // inheritance option
    string lpName // object name
    );

    /// <summary>
    /// 找出当前系统是否已经存在指定进程的实例。
    /// 如果没有则创建一个互斥体。
    /// CreateMutex()函数可用来创建一个有名或无名的互斥量对象:
    /// </summary>
    /// <param name="lpMutexAttributes">指向安全属性的指针</param>
    /// <param name="bInitialOwner">初始化互斥对象的所有者</param>
    /// <param name="lpName">指向互斥对象名的指针</param>
    /// <returns></returns>
    [DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
    private static extern IntPtr CreateMutex(
    IntPtr lpMutexAttributes, // SD
    int bInitialOwner, // initial owner
    string lpName // object name
    );
    }

  • 相关阅读:
    贝云cms内容管理系统(thinkphp5.0开源cms管理系统)
    NGINX.conf配置文件支持pathinfo
    阿里云视频直播PHPSDK接入教程
    如何在Nginx下配置PHP程序环境
    tomcat 内存参数优化示例
    12组免费的CSS3按钮强力推荐 狼人:
    9款jQuery插件为你的网站增加亮点 狼人:
    TUP第11期:腾讯、豆瓣精英实例诠释互联网研发之道 狼人:
    【TUP第11期】腾讯黄朝兴:浅谈客户端架构 狼人:
    Linus Torvalds:回顾Linux20年 狼人:
  • 原文地址:https://www.cnblogs.com/eric-xiongzw/p/3554553.html
Copyright © 2011-2022 走看看