我有下面的函数,我用来检查我的代码是否从IDE运行。真正令人沮丧的是,即使代码是从IDE运行,函数不时返回False。事实上,我找不到任何共同点,当它工作正常时,当它不工作时,任何人都有一个想法,如何修复这个功能,或一个完整的其他方法来做这个检查。(我使用该函数在开发过程中创建一个包含测试功能的菜单,并将其隐藏给最终用户)
function IDERunning: Bool;
begin
Result := (FindWindow('TAppBuilder', nil) > 0) and
(FindWindow('TPropertyInspector', 'Object Inspector') > 0);
end;
字符串
我使用 Delphi XE8
3条答案
按热度按时间iezvtpos1#
这取决于你想测试什么:
IsDebuggerPresent
测试进程是否附加了用户模式调试器。DebugHook
是否为非零,以确定程序是否在 Delphi IDE调试器下运行。请注意,当
DebugHook
为非零时,IsDebuggerPresent
将返回true,但情况并非总是如此。除了IDE调试器之外,还有其他调试器。sdnqo3pr2#
可以使用
Winapi.Windows
单元中的IsDebuggerPresent function。axzmvihb3#
对于那些来这里寻找VisualStudioIDE检测的人,可以使用System.Diagnostics.Debugger.IsAttached。
字符串