如何检测代码是否从IDE运行

时间:2015-11-18 08:58:39

标签: delphi ide

我有以下函数用于检查我的代码是否从IDE运行 真正令人沮丧的是,即使代码是从IDE运行的,函数也会不时地返回False。事实上,当它工作正常时,我找不到任何共同点,而事实并非如此 任何人都知道如何修复此功能或其他完成此检查的方法。 (我使用该功能在开发过程中创建一个可用测试功能的菜单,并将其隐藏给最终用户)

function IDERunning: Bool;
begin
  Result := (FindWindow('TAppBuilder', nil) > 0) and
    (FindWindow('TPropertyInspector', 'Object Inspector') > 0);
end;

我使用Delphi XE8

2 个答案:

答案 0 :(得分:9)

这取决于您想要测试的内容:

  • 使用IsDebuggerPresent测试是否有任何用户模式调试程序附加到您的流程。
  • 测试DebugHook是否为非零,以确定程序是否在Delphi IDE调试器下运行。

请注意,当DebugHook非零时,IsDebuggerPresent将返回true,但反之并非总是如此。除了IDE调试器之外,还有调试器。

答案 1 :(得分:4)

可以使用Winapi.Windows单元中的IsDebuggerPresent function