如何检测代码是否来自 IDE 运行
How to detect if code is run from IDE
我有以下函数来检查我的代码是否是 IDE 中的 运行
真正令人沮丧的是,有时函数 returns False 即使代码是 运行 from IDE。事实上,我找不到任何共同点来判断它什么时候工作正常,什么时候不工作
任何人都知道如何修复此功能或执行此检查的其他方法。
(我使用该功能在开发过程中制作一个带有测试功能的菜单,并将它们隐藏给最终用户)
function IDERunning: Bool;
begin
Result := (FindWindow('TAppBuilder', nil) > 0) and
(FindWindow('TPropertyInspector', 'Object Inspector') > 0);
end;
我用Delphi XE8
可以使用Winapi.Windows
单元的IsDebuggerPresent function。
具体取决于您要测试的内容:
- 使用
IsDebuggerPresent
测试您的进程是否附加了任何用户模式调试器。
- 测试
DebugHook
是否为非零以确定程序在 Delphi IDE 调试器下 运行。
请注意,当 DebugHook
非零时,IsDebuggerPresent
将 return 为真,但情况并非总是如此。除了 IDE 调试器之外还有调试器。
我有以下函数来检查我的代码是否是 IDE 中的 运行 真正令人沮丧的是,有时函数 returns False 即使代码是 运行 from IDE。事实上,我找不到任何共同点来判断它什么时候工作正常,什么时候不工作 任何人都知道如何修复此功能或执行此检查的其他方法。 (我使用该功能在开发过程中制作一个带有测试功能的菜单,并将它们隐藏给最终用户)
function IDERunning: Bool;
begin
Result := (FindWindow('TAppBuilder', nil) > 0) and
(FindWindow('TPropertyInspector', 'Object Inspector') > 0);
end;
我用Delphi XE8
可以使用Winapi.Windows
单元的IsDebuggerPresent function。
具体取决于您要测试的内容:
- 使用
IsDebuggerPresent
测试您的进程是否附加了任何用户模式调试器。 - 测试
DebugHook
是否为非零以确定程序在 Delphi IDE 调试器下 运行。
请注意,当 DebugHook
非零时,IsDebuggerPresent
将 return 为真,但情况并非总是如此。除了 IDE 调试器之外还有调试器。