如果放在主程序执行一下代码,系统所有主程序中出现错误的地方均可以执行我的过程MyExceptionHandlerbegin
  Application.Initialize;
  AppTracer := TRocketTracer.Create;
  Application.OnException:=AppTracer.MyExceptionHandler;
  Application.Run;
  AppTracer.Destroy;  
end.但我的程序中包含了好多DLL,DLL中产生的错误信息无法捕获并执行我的代码,查了写资料,不过还是没结果。请指教。我尝试使用一下代码来达到效果:
initialization
  AppTracer := TRocketTracer.Create;
  Application.OnException:=AppTracer.MyExceptionHandler;
finalization
  AppTracer.Destroy;   
可发现以上代码放在DLL工程代码中任何地方都无法编译。除非放在DLL工程的Unit中。
放在Unit中好像根本就不执行。请指教。

解决方案 »

  1.   

    改成这样.应该没有问题.
    procedure DllEnterPoint(Reason: Integer);stdcall;
    begin
      case Reason of
      DLL_PROCESS_ATTACH:
        begin
          AppTracer := TRocketTracer.Create;
          Application.OnException:=AppTracer.MyExceptionHandler;
        end;
      DLL_PROCESS_DETACH:
        begin
          AppTracer.Destroy;  
        end;
      end;
    end;exports  //导出函数/方法
    ShowForm,
    Test;begin
      DLLProc := @DllEnterPoint;
      DLLEnterPoint(DLL_PROCESS_ATTACH);
    end.
      

  2.   

    我的DLL都包含窗体,所以在调用创建Form的函数前,我做了一下初始化函数:
    procedure IniLibValues(AppHandle: Longword;AIcon:THandle
      ;CollectMsg:TProjectComm);stdcall;
    begin
      Application.Handle := AppHandle;
      Application.Icon.Handle :=AIcon;
      RComm:=CollectMsg;
    end;
    我传入了主Application的Handle,主Application的Icon
    ,还传入了一些公开常量。
      

  3.   

    运行调用完DLL后,关闭DLL出现错误:---------------------------
    Debugger Fault Notification
    ---------------------------
    Project D:\Work\Client\bin\Hotel.exe raised too many consecutive exceptions: 'access violation at 0x02703b82: read of address 0x02b8f830'. Process Stopped. Use Step or Run to continue.
    ---------------------------
    OK   Help   
    ---------------------------
      

  4.   

    利用消息触发吧注册windows消息,当dll中发生exception 时,发送到applcation出错消息!
      

  5.   

    lwk_hlj(阿凯(学习web程序开发中))大侠,能不能详细跟我说说如何做?我不怎么熟悉.谢谢