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

     
            ///<summary>
            ///应用程序的主入口点。
            ///</summary>
            [STAThread]
            staticvoid Main()
            {
                //防止程序多次运行
                if(!OneInstance.IsFirst("GetPayInfo"))
                {
                    MessageBox.Show ("警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!","程序错误提示:",MessageBoxButtons.OK,MessageBoxIcon.Stop);
                    return;
                }
                Application.Run(new Form1());
            }
            // ******************* 防止程序多次执行 **************************
            publicabstractclass OneInstance
            {
                ///<summary>
                ///判断程序是否正在运行
                ///</summary>
                ///<param name="appId">程序名称</param>
                ///<returns>如果程序是第一次运行返回True,否则返回False</returns>
                publicstaticbool 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)]
                privatestaticextern IntPtr OpenMutex(
                    uint dwDesiredAccess, // access
                    int bInheritHandle,    // inheritance option
                    string lpName          // object name
                    );
     
                [DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
                privatestaticextern IntPtr CreateMutex(
                    IntPtr lpMutexAttributes, // SD
                    int bInitialOwner,                       // initial owner
                    string lpName                            // object name
                    );
            }
  • 相关阅读:
    滑雪(dp好题)
    田忌赛马
    反质数(Antiprimes)
    LCA-倍增法(在线)
    二模 (2) day2
    Spring Integration
    [转载] Spring MVC
    收藏夹
    Linux profile File
    git merge 与 rebase 的区别
  • 原文地址:https://www.cnblogs.com/ahuang1118/p/862481.html
Copyright © 2011-2022 走看看