好久木有散分了,2009-9-27散分祝福自己,也祝福大家。为了散技术分,这里我提出个问题吧,挺简单的。问题:
如何用代码判断程序是否在IDE中执行。

解决方案 »

  1.   

    判断程序是否在IDE中执行,是在vb6的IDE窗口执行?还是win桌面运行?不明白楼主的意思
      

  2.   

    就是判断你的代码是编译exe后执行,还是在VB6的IDE中编写代码时执行。
      

  3.   

    用api GetModuleFileName也可以判断。
      

  4.   

    一个获取程序是否运行在VB的IDE开发环境的函数Option ExplicitPrivate Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
    Public Function GetIDEmode() As Boolean
    Dim strFileName As String
    Dim lngCount As Long
    strFileName = String(255, 0) 
    lngCount = GetModuleFileName(App.hInstance, strFileName, 255) 
    strFileName = Left(strFileName, lngCount) 
    If UCase(Right(strFileName, 7)) <> "VB6.EXE" Then
    GetIDEmode = False '是
    Else
    GetIDEmode = True '否
    End If
    End Function 
      

  5.   

    CSDN里有现成的啊,看来AisaC只是为了单纯地散分,俺就来单纯地接分了。
      

  6.   

    If GetObject("", "Scripting.FileSystemObject").FileExists(App.Path & "\" & App.EXEName & ".exe") Then
        MsgBox "exe"
    Else
        MsgBox "ide"
    End If
      

  7.   

    楼上几位整的复杂了吧,并且有局限性。看这个:Public Function IsIDE() As Boolean
        On Error GoTo r:
        Dim i As Long
        Debug.Print 1 / 0
        Exit Function
    r:
        IsIDE = True
    End Function
      

  8.   

    多了一行代码,看这个:Public Function IsIDE() As Boolean
        On Error GoTo r:
        Dim i As Long
        Debug.Print 1 / 0
        Exit Function
    r:
        IsIDE = True
    End Function
      

  9.   

    OMG 又错了
    自行去除:Dim i As Long
    多余的代码
      

  10.   

    像是有个比较“恶心”的办法,看看debug能否成功。
      

  11.   

    private function isIDE() as boolean
    dim bln as boolen
    debug.assert tureit(bln)
    isIDE = bln
    end functionprivate sub tureit(bln as boolean)
    bln = true
    end sub
      

  12.   

    看到一些演示控件只能运行于ide下,是不是就是这样搞的啊?
      

  13.   

    http://topic.csdn.net/u/20090411/16/af92fda3-41fb-4bf9-b16b-83980a23ef82.html
      

  14.   


    巧妙!IDE下是要执行Debug.Print的,而编译成EXE是要忽略Debug.Print!
      

  15.   

    不产生异常的方式,用了十多年了:
    '------------------------------------------------------------------------------'
    ' 功能: 检查当前是否运行在 VB-IDE 中
    ' 返回: 是/否
    '------------------------------------------------------------------------------'
    Function InIDE() As Boolean
        Static s_bFlag      As Boolean    Debug.Assert InIDECalled(s_bFlag)
        InIDE = s_bFlag
    End Function'------------------------------------------------------------------------------'
    ' 功能: 仅供 InIDE() 调用
    ' 参数:
    ' [O]   bFlag   : 标志
    ' 返回: 始终为 True,保证断言为真
    '------------------------------------------------------------------------------'
    Private Function InIDECalled(ByRef bFlag As Boolean) As Boolean
        bFlag = True
        InIDECalled = True
    End Function
      

  16.   

    正常情况下,我也是使用
    Debug.print 1/0来触发错误