本帖最后由 blueicemei 于 2010-11-02 16:47:07 编辑

解决方案 »

  1.   

    需要在线程中初始化COM和销毁COMprocedure TThread.Create;
    begin
      CoInitialize(nil);
    end;procedure TThread.Destroy;
    begin
      CoUninitialize(nil);
    end;
    也可以在执行函数中procedure TThread.Execute;
    begin
      CoInitialize(nil);
      try
      while not Terminated do
      begin
      ...
      end;
      finally
      CoUninitialize(nil);
      end;
    end;
    另外,代码中要在每次获取对象后验证有效性
    如SendMessageTimeOut后,要验证lRes是否为0
    ObjectFromLresult后,要验证pDoc是否为空
    pDoc.parentWindow这样的形式,最好也要验证有效性