我的程序如何判断Delphi是否正在运行?

前端之家收集整理的这篇文章主要介绍了我的程序如何判断Delphi是否正在运行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我听说一些自定义组件作者使用RTL例程来检查Delphi是否正在运行以设置共享软件限制.有谁知道这个例程是什么?检查明显的名称,如“DelphiRunning”或“IsDelphiRunning”并没有发现任何有用的东西.

解决方法

这里有两个不同的想法:
– Delphi正在运行
– 应用程序在调试器下运行

测试Delphi是否正在运行的常用方法是检查是否存在具有特定类名的已知IDE Windows,如TAppBuilder或TPropertyInspector.
这两个版本适用于所有版本的Delphi IIRC.

如果您想知道您的应用程序是否在调试器下运行,即通过IDE“运行”(F9)正常启动或在运行时连接到调试器,您只需要测试DebugHook全局变量.
请注意,“从程序中分离”不会删除DebugHook值,但“附加到进程”会设置它.

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

function IsOrWasUnderDebugger: Boolean;
begin
  Result := DebugHook <> 0;
end;

如果目标是将组件的试用版本限制为在开发应用程序时使用,则两者都有缺陷: – 应用程序中可以包含具有正确类别名称/标题的隐藏窗口 – 可以在代码中手动设置DebugHook

猜你在找的Delphi相关文章