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

时间:2009-06-29 10:46:09

标签: delphi delphi-2007 delphi.net

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

再见。

6 个答案:

答案 0 :(得分:4)

IsDebuggerPresent()WinAPI调用。

答案 1 :(得分:4)

回答我自己的问题。

uses System.Diagnostics; 

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

对我来说很好。

再见。

答案 2 :(得分:2)

类似的东西:

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

可能适合。

答案 3 :(得分:2)

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;

答案 4 :(得分:0)

我从embarcadero

找到了这个更一般的答案

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

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

答案 5 :(得分:-4)

function IsDebugMode():Boolean;
begin
  Result:=False;
 {$IFDEF DEBUG}
  Result:=True;
 {$ENDIF}
end;