Как я могу определить, работает ли мое приложение в среде IDE "Delphi 2007 .Net", есть ли что-то вроде DebugHook?
Пока.
Как я могу определить, работает ли мое приложение в среде IDE "Delphi 2007 .Net", есть ли что-то вроде DebugHook?
Пока.
Ответьте на мой собственный вопрос.
uses System.Diagnostics;
function IDEDelphiNetRunning:Boolean;
Begin
Result:=Debugger.IsAttached;
End;
отлично работает для меня.
Пока.
Вызов WinAPI IsDebuggerPresent().
Что-то типа:
Function IDEIsRunning : boolean;
begin
result := DebugHook <> 0;
end;
Подходит.
Модуль 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;
Я нашел этот более общий ответ от embarcadero.
Используйте вызов IsDebuggerPresent()
WinAPI. Пример на С++:
if (IsDebuggerPresent())
Label1->Caption = "debug";
else
Label1->Caption = "no debug";