检测我的应用程序是否在 IDE“Delphi 2007 .Net”下运行

发布于 2024-07-25 21:26:40 字数 80 浏览 4 评论 0原文

如何检测我的应用程序是否在 IDE“Delphi 2007 .Net”下运行,是否有 DebugHook 之类的东西?

再见。

How can I detect if my application is running under the IDE "Delphi 2007 .Net", there is something like DebugHook?

Bye.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

几度春秋 2024-08-01 21:26:40

回答我自己的问题。

uses System.Diagnostics; 

function IDEDelphiNetRunning:Boolean; 
Begin 
Result:=Debugger.IsAttached; 
End; 

对我来说效果很好。

再见。

Answer my own question.

uses System.Diagnostics; 

function IDEDelphiNetRunning:Boolean; 
Begin 
Result:=Debugger.IsAttached; 
End; 

works fine for me.

Bye.

枯寂 2024-08-01 21:26:40

IsDebuggerPresent() WinAPI 调用。

The IsDebuggerPresent() WinAPI call.

陈甜 2024-08-01 21:26:40

比如:

Function IDEIsRunning : boolean;
begin
  result := DebugHook <> 0;
end;

可能适合。

Something like:

Function IDEIsRunning : boolean;
begin
  result := DebugHook <> 0;
end;

Might Suit.

一紙繁鸢 2024-08-01 21:26:40

JEDI JclDebug.pas 单元包含以下内容:

function IsDebuggerAttached: Boolean;
var
  IsDebuggerPresent: function: Boolean; stdcall;
  KernelHandle: THandle;
  P: Pointer;
begin
  KernelHandle := GetModuleHandle(kernel32);
  @IsDebuggerPresent := GetProcAddress(KernelHandle, 'IsDebuggerPresent');
  if @IsDebuggerPresent <> nil then
  begin
    // Win98+ / NT4+
    Result := IsDebuggerPresent
  end
  else
  begin
    // Win9x uses thunk pointer outside the module when under a debugger
    P := GetProcAddress(KernelHandle, 'GetProcAddress');
    Result := DWORD(P) < KernelHandle;
  end;
end;

The JEDI JclDebug.pas unit contains the following:

function IsDebuggerAttached: Boolean;
var
  IsDebuggerPresent: function: Boolean; stdcall;
  KernelHandle: THandle;
  P: Pointer;
begin
  KernelHandle := GetModuleHandle(kernel32);
  @IsDebuggerPresent := GetProcAddress(KernelHandle, 'IsDebuggerPresent');
  if @IsDebuggerPresent <> nil then
  begin
    // Win98+ / NT4+
    Result := IsDebuggerPresent
  end
  else
  begin
    // Win9x uses thunk pointer outside the module when under a debugger
    P := GetProcAddress(KernelHandle, 'GetProcAddress');
    Result := DWORD(P) < KernelHandle;
  end;
end;
∝单色的世界 2024-08-01 21:26:40

我从 embarcadero 找到了这个更一般的答案

使用 IsDebuggerPresent() WinAPI 调用。
C++ 中的示例:

if (IsDebuggerPresent())
    Label1->Caption = "debug";
else
    Label1->Caption = "no debug";

I found this more general answer, from embarcadero

Use the IsDebuggerPresent() WinAPI call.
Example in C++:

if (IsDebuggerPresent())
    Label1->Caption = "debug";
else
    Label1->Caption = "no debug";
长途伴 2024-08-01 21:26:40
function IsDebugMode():Boolean;
begin
  Result:=False;
 {$IFDEF DEBUG}
  Result:=True;
 {$ENDIF}
end;
function IsDebugMode():Boolean;
begin
  Result:=False;
 {$IFDEF DEBUG}
  Result:=True;
 {$ENDIF}
end;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文