Frage

Wie kann ich erkennen, ob meine Anwendung unter dem IDE „Delphi 2007 Net“ ausgeführt wird, gibt es so etwas wie DebugHook?

Bye.

War es hilfreich?

Lösung

Antwort meine eigene Frage.

uses System.Diagnostics; 

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

funktioniert gut für mich.

Bye.

Andere Tipps

Die IsDebuggerPresent () WinAPI Anruf.

So etwas wie:

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

Könnte Anzug.

Die JEDI JclDebug.pas Einheit enthält folgende Möglichkeiten:

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;

Ich fand diese allgemeinere Antwort von embarcadero

Mit dem IsDebuggerPresent() WinAPI Anruf. Beispiel in C ++:

if (IsDebuggerPresent())
    Label1->Caption = "debug";
else
    Label1->Caption = "no debug";
function IsDebugMode():Boolean;
begin
  Result:=False;
 {$IFDEF DEBUG}
  Result:=True;
 {$ENDIF}
end;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top