8

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

再见。

4

6 回答 6

6

回答我自己的问题。

uses System.Diagnostics; 

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

对我来说很好。

再见。

于 2009-08-12T04:54:26.137 回答
4

IsDebuggerPresent() WinAPI 调用。

于 2009-06-29T11:37:20.387 回答
4

就像是:

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

可能适合。

于 2009-06-30T03:18:13.353 回答
3

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;
于 2014-11-18T22:43:36.307 回答
1

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

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

if (IsDebuggerPresent())
    Label1->Caption = "debug";
else
    Label1->Caption = "no debug";
于 2012-05-23T12:38:19.100 回答
-4
function IsDebugMode():Boolean;
begin
  Result:=False;
 {$IFDEF DEBUG}
  Result:=True;
 {$ENDIF}
end;
于 2016-05-23T14:36:28.240 回答