加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 03:49:47 所属栏目:大数据 来源:网络整理
导读:我听说一些自定义组件作者使用RTL例程来检查Delphi是否正在运行以设置共享软件限制.有谁知道这个例程是什么?检查明显的名称,如“DelphiRunning”或“IsDelphiRunning”并没有发现任何有用的东西. 解决方法 这里有两个不同的想法: – 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读