技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 3428|回复: 9
收起左侧

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

[复制链接]

1096

主题

2683

帖子

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
240
威望
649 点
宅币
22725 个
贡献
46121 次
宅之契约
0 份
在线时间
2167 小时
注册时间
2014-1-26
发表于 2021-2-22 17:52:49 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

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

[Visual Basic] 纯文本查看 复制代码
'检测是否在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
回复

使用道具 举报

7

主题

149

帖子

8359

积分

用户组: 真·技术宅

UID
4293
精华
5
威望
424 点
宅币
6508 个
贡献
829 次
宅之契约
0 份
在线时间
248 小时
注册时间
2018-9-19
发表于 2021-2-23 10:05:02 | 显示全部楼层
用这个还不如直接 App.LogMode 吧,VB6都自带了。有没有能条件编译判断的方式呢?

50

主题

266

帖子

8665

积分

用户组: 管理员

UID
77
精华
15
威望
204 点
宅币
7699 个
贡献
217 次
宅之契约
0 份
在线时间
215 小时
注册时间
2014-2-22
发表于 2021-2-23 16:24:25 | 显示全部楼层
为啥我觉得黑科技只有在VB6IDE运行的时候才好使?

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

1096

主题

2683

帖子

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
240
威望
649 点
宅币
22725 个
贡献
46121 次
宅之契约
0 份
在线时间
2167 小时
注册时间
2014-1-26
 楼主| 发表于 2021-2-23 16:54:07 | 显示全部楼层
美俪女神 发表于 2021-2-23 16:24
为啥我觉得黑科技只有在VB6IDE运行的时候才好使?

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

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

7

主题

149

帖子

8359

积分

用户组: 真·技术宅

UID
4293
精华
5
威望
424 点
宅币
6508 个
贡献
829 次
宅之契约
0 份
在线时间
248 小时
注册时间
2018-9-19
发表于 2021-2-24 10:08:57 | 显示全部楼层
0xAA55 发表于 2021-2-23 16:54
我用它写自己的UserControl的时候,拿来判断是否处在编辑模式

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

1096

主题

2683

帖子

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
240
威望
649 点
宅币
22725 个
贡献
46121 次
宅之契约
0 份
在线时间
2167 小时
注册时间
2014-1-26
 楼主| 发表于 2021-2-24 23:42:29 | 显示全部楼层
系统消息 发表于 2021-2-24 10:08
不有提供专门的 Ambient.UserMode 属性可以判断吗?

虽说用过然后发现不好使

1

主题

120

帖子

208

积分

用户组: 中·技术宅

UID
7535
精华
0
威望
0 点
宅币
88 个
贡献
0 次
宅之契约
0 份
在线时间
17 小时
注册时间
2021-10-16
发表于 2022-5-17 11:18:05 | 显示全部楼层

珍惜生命,果断回帖。

0

主题

39

帖子

83

积分

用户组: 小·技术宅

UID
1457
精华
0
威望
2 点
宅币
40 个
贡献
0 次
宅之契约
0 份
在线时间
8 小时
注册时间
2016-1-29
发表于 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)

1096

主题

2683

帖子

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
240
威望
649 点
宅币
22725 个
贡献
46121 次
宅之契约
0 份
在线时间
2167 小时
注册时间
2014-1-26
 楼主| 发表于 2022-9-6 12:23:40 | 显示全部楼层
搬砖工 发表于 2022-9-6 11:43
推荐这个方案,效率最高,也最稳
不论是App.LogMode还是API都有一些特殊场景有意外发生,有看过老外的讨论 ...

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

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

0

主题

3

帖子

17

积分

用户组: 初·技术宅

UID
3038
精华
0
威望
0 点
宅币
14 个
贡献
0 次
宅之契约
0 份
在线时间
1 小时
注册时间
2017-11-3
发表于 2022-9-14 20:57:00 | 显示全部楼层
回帖保命
回复

使用道具 举报

本版积分规则

QQ|申请友链||Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2022-10-7 02:19 , Processed in 0.046299 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表