Определите, работает ли мое приложение в среде IDE "Delphi 2007 .Net". - PullRequest
8 голосов
/ 29 июня 2009

Как я могу определить, работает ли мое приложение под IDE "Delphi 2007 .Net", есть что-то вроде DebugHook?

Bye.

Ответы [ 6 ]

5 голосов
/ 12 августа 2009

Ответь на мой вопрос.

uses System.Diagnostics; 

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

у меня отлично работает.

Bye.

4 голосов
/ 29 июня 2009

Вызов IsDebuggerPresent () WinAPI.

3 голосов
/ 19 ноября 2014

Блок 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;
3 голосов
/ 30 июня 2009

Что-то вроде:

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

Might Suit.

1 голос
/ 23 мая 2012

Я нашел этот более общий ответ от embarcadero

Используйте IsDebuggerPresent() вызов WinAPI. Пример на C ++:

if (IsDebuggerPresent())
    Label1->Caption = "debug";
else
    Label1->Caption = "no debug";
0 голосов
/ 23 мая 2016
function IsDebugMode():Boolean;
begin
  Result:=False;
 {$IFDEF DEBUG}
  Result:=True;
 {$ENDIF}
end;
...