如何检测我的应用程序是否在IDE“Delphi 2007 .Net”下运行,有类似DebugHook的东西吗?
再见。
答案 0 :(得分:4)
IsDebuggerPresent()WinAPI调用。
答案 1 :(得分:4)
回答我自己的问题。
uses System.Diagnostics;
function IDEDelphiNetRunning:Boolean;
Begin
Result:=Debugger.IsAttached;
End;
对我来说很好。
再见。
答案 2 :(得分:2)
类似的东西:
Function IDEIsRunning : boolean;
begin
result := DebugHook <> 0;
end;
可能适合。
答案 3 :(得分:2)
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;
答案 4 :(得分:0)
使用IsDebuggerPresent()
WinAPI电话。
C ++中的示例:
if (IsDebuggerPresent())
Label1->Caption = "debug";
else
Label1->Caption = "no debug";
答案 5 :(得分:-4)
function IsDebugMode():Boolean;
begin
Result:=False;
{$IFDEF DEBUG}
Result:=True;
{$ENDIF}
end;