VB.net 关于程序单实例问题的解决方法

就是在登陆窗体后台代码(或者说是程序的第一运行窗体后台代码)
-----------------------------coding-----------------------------------------------
        'For   single   instance
        Public   Function   CheckNimsRunning()   As   Integer
                Dim   pTmp   As   Process()   =   Process.GetProcesses()
                Dim   pCurrent   As   Process   =   Process.GetCurrentProcess()

                If   (pTmp.Length   >   0)   Then
                        Dim   i   As   Integer
                        While   (i   <   pTmp.Length)
                                If   (pTmp(i).Id   >   4)   Then
                                        If   (pTmp(i).Id   <>   pCurrent.Id)   Then
                                                'If   (pTmp(i).MainModule.ModuleName   =   pCurrent.MainModule.ModuleName)   Then
                                                If   (pTmp(i).ProcessName   =   pCurrent.ProcessName)   Then
                                                        Return   (pTmp(i).Id)
                                                End   If
                                        End   If
                                End   If

                                i   =   i   +   1
                        End   While
                End   If

                Return   (0)
        End   Function
-----------------------------coding-----------------------------------------------

然后在入口的   Form_Load   中合适的位置写入下代码 
-----------------------------coding-----------------------------------------------

                'For   single   instance
                Dim   pNimsID   As   Integer   =   CheckNimsRunning()
                If   (pNimsID   >   0)   Then
                        AppActivate(pNimsID)

                        Me.Close()
                        Exit   Sub
                End   If

-----------------------------coding-----------------------------------------------

 

 

 

关于单实例上面的代码有些小bug,就是在打开程序以后,继续狂点击程序开始的exe,会报错!

现把代码修改如下:

 Dim myProcesses As Process()
        Dim myfilename As String
        myfilename = Application.ExecutablePath
        myfilename = myfilename.Substring(myfilename.LastIndexOf("\") + 1)
        myfilename = myfilename.Substring(0, myfilename.LastIndexOf("."))
        myProcesses = Process.GetProcessesByName(myfilename)
        If myProcesses.Length > 1 Then
            MessageBox.Show("已经登陆", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Me.Close()
            Application.Exit()
        End If

内容及其使用 __________________________________________________________________ 目录内容及使用方法: \ch01~ch13 分别包含了书中各章的主要程序文件,各章中的子目录 Examp01~Examp0n分别存放了书中该章中所对应的各个 例程。读者可以使用 Visual Basic6.0 将它们分别打开, 分析其中的源代码和各个控件的属性设置。 __________________________________________________________________ 注意: 本光盘上程序的运行和工程文件的打开都需要用户首先安装 Visual Basic6.0。 在使用源码程序之前,需要将光盘上的该程序的所有文件拷贝到硬盘上, 去掉其只读属性,方可打开、编译和调试。 对于6个特殊实例,给出如下调试说明:    (1)第1章的实例4和第11章的实例1,需要运行在Windows 9x或 Windows NT操作系统下,否则程序可能出错。    (2)在运行第8章的实例1时,需要用户计算机连接到网络中,并与其 它机器建立了连接。否则,程序将会出现“WNetEnumResource错 误或没有发现映射驱动器”错误提示信息。    (3)在运行第12章的实例2、实例3和实例4时,需要用户计算机连接到 配置了DHCP服务器的网络中。 __________________________________________________________________ 系统需求: 1.硬件配置 CPU :≥Pentium II 300 内 存:≥64M 显 卡:支持800×600×16位色以上显示 光 驱:≥24倍速 网 卡:10M/100M 2.运行环境 中文 Windows 2000、9X、NT 4.0(带有 Service Pack 4 以上) _________________________________________________________________ 联系信息: 作者(技术支持) 姓 名:肖斌 电子邮件:weichen0792@sina.com 北京希望电子出版社 技术支持:(010)82675588-525 王守刚 地 址:北京市海淀区知春路甲63号卫星大厦三层 邮政地址:北京中关村083信箱 邮 编:100080 网上书店:www.bhp.com.cn 电子邮件:lwm@hope.com.cn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值