Jak wykryć, czy moja aplikacja działa pod IDE "Delphi 2007.Net", jest coś takiego jak DebugHook?Wykryj, czy moja aplikacja działa pod IDE "Delphi 2007 .Net"
Pa.
Jak wykryć, czy moja aplikacja działa pod IDE "Delphi 2007.Net", jest coś takiego jak DebugHook?Wykryj, czy moja aplikacja działa pod IDE "Delphi 2007 .Net"
Pa.
Odpowiedz na własne pytanie.
uses System.Diagnostics;
function IDEDelphiNetRunning:Boolean;
Begin
Result:=Debugger.IsAttached;
End;
działa dobrze dla mnie.
Pa.
Wywołanie IsAPebuggerPresent() WinAPI.
Coś jak:
Function IDEIsRunning : boolean;
begin
result := DebugHook <> 0;
end;
Might garnitur.
Alister, DebugHook nie istnieje w "Delphi 2007.Net", więc poszukaj jakiejś alternatywy. – RRUZ
Cóż, szukałem, jak zrobić dokładnie to samo, co OP ... ale w Delphi 5. Więc naturalnie to działało idealnie dla mnie. :) +1 –
To działa na Delphi 7 ;-) – NetVicious
znalazłem to bardziej ogólną odpowiedź, z embarcadero
Użyj połączeń IsDebuggerPresent()
WinAPI. Przykład w C++:
if (IsDebuggerPresent())
Label1->Caption = "debug";
else
Label1->Caption = "no debug";
Jednostka JEDI JclDebug.pas zawiera następujące elementy:
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;
Pytanie dotyczy konkretnie debuggera "Delphi 2007.net", a nie tylko jakiegokolwiek debuggera. –
function IsDebugMode():Boolean;
begin
Result:=False;
{$IFDEF DEBUG}
Result:=True;
{$ENDIF}
end;
To nie mówi, czy używasz debuggera. Po prostu powie Ci, czy DEBUG został zdefiniowany podczas kompilacji. W związku z tym opublikowałeś całkowicie niepoprawną odpowiedź na 6-letnie pytanie, które już zawiera kilka prawidłowych odpowiedzi. –
To naprawdę nie jest odpowiedź na pytanie, choć, jak uruchomieniu aplikacji pod Delphi i uruchamianie go pod jakimkolwiek innym debuggerem nie może być odróżniane w ten sposób. Może to nie jest ważne dla PO, ale pytanie powinno być wtedy inaczej sformułowane. Również istnieje Debugger.IsAttached w System.Diagnostics, nie trzeba wywoływać Windows API. – mghie