0xAA55 发表于 2021-2-22 17:52:49

【VB6】检测是否运行于IDE的调试模式下

当你打算使用一些黑科技优化,而它会让IDE崩溃导致调试困难的时候,可以先检测代码是否运行于IDE的调试模式下,然后在调试模式下先不使用黑科技来实现功能,在编译后才使用黑科技。

'检测是否在IDE环境下运行
Function IsRunningInVB6IDE() As Boolean
Static Counter As Variant
If IsEmpty(Counter) Then
    Counter = 1
    Debug.Assert IsRunningInVB6IDE() Or True
    Counter = Counter - 1
ElseIf Counter = 1 Then
    Counter = 0
End If
IsRunningInVB6IDE = Counter
End Function

系统消息 发表于 2021-2-23 10:05:02

用这个还不如直接 App.LogMode 吧,VB6都自带了。有没有能条件编译判断的方式呢?

Golden Blonde 发表于 2021-2-23 16:24:25

为啥我觉得黑科技只有在VB6IDE运行的时候才好使?

顺带说句,那个App.LogMode好像是有啥奇怪的用途。
http://www.johnsmiley.com/cis18/smiley022.pdf

0xAA55 发表于 2021-2-23 16:54:07

美俪女神 发表于 2021-2-23 16:24
为啥我觉得黑科技只有在VB6IDE运行的时候才好使?

顺带说句,那个App.LogMode好像是有啥奇怪的用途。


我用它写自己的UserControl的时候,拿来判断是否处在编辑模式

系统消息 发表于 2021-2-24 10:08:57

0xAA55 发表于 2021-2-23 16:54
我用它写自己的UserControl的时候,拿来判断是否处在编辑模式

不有提供专门的 Ambient.UserMode 属性可以判断吗?

0xAA55 发表于 2021-2-24 23:42:29

系统消息 发表于 2021-2-24 10:08
不有提供专门的 Ambient.UserMode 属性可以判断吗?

虽说用过然后发现不好使

xiawan 发表于 2022-5-17 11:18:05


珍惜生命,果断回帖。

搬砖工 发表于 2022-9-6 11:43:55

推荐这个方案,效率最高,也最稳
不论是App.LogMode还是API都有一些特殊场景有意外发生,有看过老外的讨论帖
Public Function MakeTrue( _
    ByRef bValue As Boolean) As Boolean
    MakeTrue = True: bValue = True
End Function
使用
Dim bInIDE As Boolean
Debug.Assert MakeTrue(bInIDE)

0xAA55 发表于 2022-9-6 12:23:40

搬砖工 发表于 2022-9-6 11:43
推荐这个方案,效率最高,也最稳
不论是App.LogMode还是API都有一些特殊场景有意外发生,有看过老外的讨论 ...

我印象里记得确实有这个 MakeTrue 的检测方式,很简洁。

只是多年不用 VB6,再次遇到这个问题的时候,我就用了一个别的办法。

伟哥 发表于 2022-9-14 20:57:00

回帖保命

W741 发表于 2022-11-18 16:14:38

火钳留铭
页: [1]
查看完整版本: 【VB6】检测是否运行于IDE的调试模式下