Comment puis-je détecter si mon application s'exécute sous l'EDI "Delphi 2007 .Net", il y a quelque chose comme DebugHook?Détecter si mon application s'exécute sous l'EDI "Delphi 2007 .Net"
Salut.
Comment puis-je détecter si mon application s'exécute sous l'EDI "Delphi 2007 .Net", il y a quelque chose comme DebugHook?Détecter si mon application s'exécute sous l'EDI "Delphi 2007 .Net"
Salut.
Répondez à ma question.
uses System.Diagnostics;
function IDEDelphiNetRunning:Boolean;
Begin
Result:=Debugger.IsAttached;
End;
fonctionne très bien pour moi.
Salut.
L'appel WinAPI IsDebuggerPresent().
Quelque chose comme:
Function IDEIsRunning : boolean;
begin
result := DebugHook <> 0;
end;
pourrait convenir.
Alister, DebugHook n'existe pas dans "Delphi 2007.Net", alors cherchez une alternative. – RRUZ
Eh bien, je cherchais comment faire exactement la même chose que OP ... mais dans Delphi 5. Donc, naturellement, cela a parfaitement fonctionné pour moi. :) +1 –
Cela fonctionne sur Delphi 7 ;-) – NetVicious
Je trouve cette réponse plus générale, de embarcadero
Utilisez le appel IsDebuggerPresent()
WinAPI. Exemple en C++:
if (IsDebuggerPresent())
Label1->Caption = "debug";
else
Label1->Caption = "no debug";
L'unité JEDI JclDebug.pas contient les éléments suivants:
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;
La question demande spécifiquement le débogueur "Delphi 2007.net", pas n'importe quel débogueur. –
function IsDebugMode():Boolean;
begin
Result:=False;
{$IFDEF DEBUG}
Result:=True;
{$ENDIF}
end;
Cela ne vous dit pas si vous utilisez le débogueur. Il vous indique simplement si DEBUG a été défini au moment de la compilation. Donc, vous avez posté une réponse totalement incorrecte à une question de 6 ans qui avait déjà plusieurs réponses correctes existantes. –
Ce n'est pas vraiment une réponse à la question que, en exécutant l'application sous Delphi et l'exécuter sous n'importe quel autre débogueur ne peut pas être distingué de cette façon. Peut-être que ce n'est pas important pour le PO, mais la question aurait dû être formulée différemment alors. Il y a aussi Debugger.IsAttached dans System.Diagnostics, pas besoin d'appeler l'API Windows. – mghie