地址写错误
try
  form1.Memo1.Lines.Clear;
     form1.Memo1.Lines.Add(string(Data.Buf));
except on e: exception do
    raise exception .Create(e.Message);//此处断点看一下form1.Memo1信息是否正常
end;

解决方案 »

  1.   


    这太诡异了  哈
    错误提示, 应该是form1或memo1出问题了, 那么加异常处理就不会奔溃.
    如果你没有主动释放相关对象的话,你可以提前判一下
    try
      application.processmessage;
      if (form1 = nil) or (form1.Memo1 = nil) then
        exit;
      form1.Memo1.Lines.Clear;
         form1.Memo1.Lines.Add(string(Data.Buf));
    except on e: exception do
        raise exception .Create(e.Message);//此处断点看一下form1.Memo1信息是否正常
    end;
      

  2.   

    因为你hook send后进你NewSend函数时候是被hook进程的线程,不在你窗体主线程时候你不该操作你的VCL控件,这点是多线程开发需要注意的,不在主线程不要操作VCL控件,你应该用SendMessage 发送自定义消息到窗体,然后进行数据处理。
      

  3.   

    因为你Hook的函数不一定是在主线程执行的,调用Form上的东西当然会出错.