代码:
var TestVar: Integer; function NtGetContextThread(ThreadHandle: THANDLE; Context: PCONTEXT): Integer; stdcall; external 'ntdll' name 'NtGetContextThread'; function HBExists: Boolean; var C: TContext; begin C.ContextFlags:=Windows.CONTEXT_DEBUG_REGISTERS; NtGetContextThread(GetCurrentThread, @C); Result:=(C.Dr0<>0) or (C.Dr1<>0) or (C.Dr2<>0) or (C.Dr3<>0) or (C.Dr6<>0) or (C.Dr7<>0); end; procedure TXForm.BtTestVarClick(Sender: TObject); begin Inc(TestVar); end; procedure TXForm.TimerTimer(Sender: TObject); begin MmShow.Text:='TestVar地址: '+IntToHex(Cardinal(@TestVar), 8)+#13#10+'TestVar数值: '+IntToStr(TestVar); if HBExists then EtState.Text:='硬件断点 有!' else EtState.Text:='硬件断点 无...' end;