8

アプリケーションが IDE "Delphi 2007 .Net" で実行されているかどうかを検出するにはどうすればよいですか? DebugHook のようなものがありますか?

さよなら。

4

6 に答える 6

6

私自身の質問に答えてください。

uses System.Diagnostics; 

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

私にとってはうまくいきます。

さよなら。

于 2009-08-12T04:54:26.137 に答える
4

IsDebuggerPresent()WinAPI呼び出し。

于 2009-06-29T11:37:20.387 に答える
4

何かのようなもの:

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

合うかもしれません。

于 2009-06-30T03:18:13.353 に答える
3

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;
于 2014-11-18T22:43:36.307 に答える
1

embarcaderoから、このより一般的な回答を見つけました

IsDebuggerPresent()WinAPI 呼び出しを使用します。C++ での例:

if (IsDebuggerPresent())
    Label1->Caption = "debug";
else
    Label1->Caption = "no debug";
于 2012-05-23T12:38:19.100 に答える
-4
function IsDebugMode():Boolean;
begin
  Result:=False;
 {$IFDEF DEBUG}
  Result:=True;
 {$ENDIF}
end;
于 2016-05-23T14:36:28.240 に答える