在VB和VB.NET程序中判断当前是否运行于开发环境中

前端之家收集整理的这篇文章主要介绍了在VB和VB.NET程序中判断当前是否运行于开发环境中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_301_1@

'方法一:
Private Function IsIDE() As Boolean
    Static bInIDE Boolean
    bInIDE = Not bInIDE
    If bInIDE Then
        Debug.Assert IsIDE() Or True
        IsIDE = End If
Function
Sub Form_Load()
    MsgBox IsIDE
Sub

方法二:@H_301_1@

有时我们需要判断正在运行的程序是处于开发环境下(调试模式),还是正常运行状态(已编译后).以前看到个VB6的判断方式:@H_301_1@

Public Function IsDebugMode() As Boolean@H_301_1@

IsDebugMode = False@H_301_1@

On Error Resume Next@H_301_1@

Debug.Print 1 / 0@H_301_1@

If Err.Number <> 0 Then@H_301_1@

IsDebugMode = True@H_301_1@

End If@H_301_1@

End Function@H_301_1@


这段代码的原理就在于:在编译之后的应用程序运行时会直接忽略Debug.Print这一语句.也就是说,若不产生错误,说明这个语句根本没有执行,因而是在编译后的实际环境中;而如果产生了错误,则说明这个语句正常地执行了,说明是在开发环境中.@H_301_1@


如今这个方法用在VB2005中不行了.因为在.NET 2005中,1/0并不会产生错误,而是得到一个输出结果:无穷大.这样的话,在VB2005中必须让Debug去Print一个会产生异常的表达式.可以改进如下:@H_301_1@

@H_301_1@

Dim o As Object = Nothing@H_301_1@

Try@H_301_1@

Debug.Print(o.Name)@H_301_1@

Return False@H_301_1@

Catch ex As Exception@H_301_1@

Return True@H_301_1@

End Try@H_301_1@

在这段代码中,定义了一个对象变量,并赋值为空,因此,o.Name会产生一个System.NullReferenceException的异常@H_301_1@

猜你在找的VB相关文章