Wie kann ich feststellen, ob meine Anwendung unter der IDE "Delphi 2007.Net" läuft, gibt es so etwas wie DebugHook?Ermitteln, ob meine Anwendung unter der IDE "Delphi 2007.Net" läuft
Tschüss.
Wie kann ich feststellen, ob meine Anwendung unter der IDE "Delphi 2007.Net" läuft, gibt es so etwas wie DebugHook?Ermitteln, ob meine Anwendung unter der IDE "Delphi 2007.Net" läuft
Tschüss.
Beantworten Sie meine eigene Frage.
uses System.Diagnostics;
function IDEDelphiNetRunning:Boolean;
Begin
Result:=Debugger.IsAttached;
End;
funktioniert gut für mich.
Tschüss.
Der IsDebuggerPresent() WinAPI-Aufruf.
Etwas wie:
Function IDEIsRunning : boolean;
begin
result := DebugHook <> 0;
end;
passen könnte.
Alister, DebugHook existiert nicht in "Delphi 2007.Net", suchen Sie nach einer Alternative. – RRUZ
Nun, ich war auf der Suche nach genau dem gleichen Verfahren wie OP ... aber in Delphi 5. Das hat natürlich perfekt für mich funktioniert. :) +1 –
Dies funktioniert auf Delphi 7 ;-) – NetVicious
fand ich diese allgemeinere Antwort von embarcadero
Verwenden Sie den IsDebuggerPresent()
WinAPI Anruf. Beispiel in C++:
if (IsDebuggerPresent())
Label1->Caption = "debug";
else
Label1->Caption = "no debug";
Die JEDI JclDebug.pas Einheit enthält folgende Komponenten:
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;
Die Frage ist speziell für die "Delphi 2007.net" Debugger, nicht nur Debugger. –
function IsDebugMode():Boolean;
begin
Result:=False;
{$IFDEF DEBUG}
Result:=True;
{$ENDIF}
end;
Dies sagt Ihnen nicht, ob Sie unter dem Debugger laufen. Es sagt Ihnen einfach, ob DEBUG zum Zeitpunkt der Kompilierung definiert wurde. Sie haben also eine völlig falsche Antwort auf eine 6 Jahre alte Frage gepostet, bei der bereits mehrere richtige Antworten vorhanden waren. –
Das ist nicht wirklich eine Antwort auf die Frage aber, wie die Anwendung unter Delphi läuft und das Ausführen unter einem anderen Debugger kann auf diese Weise nicht unterschieden werden. Vielleicht ist das für das OP nicht wichtig, aber die Frage hätte anders formuliert werden müssen. Auch gibt es Debugger.IsAttached in System.Diagnostics, keine Notwendigkeit, die Windows-API aufzurufen. – mghie