COM+组件中主要的方法:
unit Resize;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
  ComObj, ActiveX, AspTlb, wsImage_TLB, StdVcl,Graphics,ExtCtrls,Dialogs;type
  TdoImage = class(TASPObject, IdoImage, IDispatch)
  protected
    procedure OnEndPage; safecall;
    procedure OnStartPage(const AScriptingContext: IUnknown); safecall;
    procedure Draw(const pic, font: WideString; size: integer;
      const color: WideString); safecall;
 end;
implementationuses ComServ;procedure TdoImage.OnEndPage;
begin
  inherited OnEndPage;
end;procedure TdoImage.OnStartPage(const AScriptingContext: IUnknown);
begin
  inherited OnStartPage(AScriptingContext);
end;procedure TdoImage.Draw(const pic, font: WideString; size: integer;
  const color: WideString);
var
  image:TImage;
  Canvas:TCanvas;
begin
   //add string to image.
   image:=TImage.Create(nil);
   image.Picture.Graphic.LoadFromFile(pic);
   Canvas:=image.Canvas.Create;
   Canvas.Pen.Color:=clBlue;
   Canvas.MoveTo(10,10);
   Canvas.Brush.Color:=clBtnFace;
   Canvas.Font.Name:='Arial';
   Canvas.TextOut(Canvas.PenPos.X,Canvas.PenPos.Y,'www.kedom.com');
   canvas.Free;
   end;
initialization
  TAutoObjectFactory.Create(ComServer, TdoImage, Class_doImage,
    ciMultiInstance, tmApartment);
end.在asp中调用如下:
<%
dim src,pic
set obj=Server.CreateObject("wsImage.doImage")
pic=Server.mapPath("/images/service.gif")
obj.Draw pic,"",12,"#ffffff"
response.write err.description 
set obj=nothing
%>注:该组件在MTS中和用regsvr32都能成功注册,
但在MTS中注册组件后,asp页面出现:“检查权限时,对 Server.CreateObject 的调用失败。拒绝对此对象的访问。”
用regsvr32注册后,asp页面出现:   “错误 '8000ffff' ”
且如果去掉obj.Draw 这一行,没有出现错误,所以肯定是我的Draw方法用问题,请各位给我指指路!!谢谢!

解决方案 »

  1.   

    没在窗口里执行,怎能用Canvas呢
      

  2.   

    各位仁兄,帮我顶顶三!!!!!!!!!!
    Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!
      

  3.   

    procedure TdoImage.Draw(const pic, font: WideString; size: integer;
      const color: WideString);
    var
      image:TImage;
      Canvas:TCanvas;
    begin
       //add string to image.
       image:=TImage.Create(nil);
       image.Picture.Graphic.LoadFromFile(pic);
    //   Canvas:=image.Canvas.Create; //应从类创建
       Canvas := TCanvas.Create;   //改成这
       Canvas.Pen.Color:=clBlue;
       Canvas.MoveTo(10,10);
       Canvas.Brush.Color:=clBtnFace;
       Canvas.Font.Name:='Arial';
       Canvas.TextOut(Canvas.PenPos.X,Canvas.PenPos.Y,'www.kedom.com');
       canvas.Free;
       end;
      

  4.   

    建立了TImage和TCanvas,能输出到网面上吗?而且也忘记释放TImage了~
      

  5.   

    你要实现的意图
    和 你要解决的问题方法有毛病,这不应该是COM干的活,ComServ中主要是Serv的,
    你在用应用思想去实现服务的功能,呵呵,
      

  6.   

    是IIS的权限设置问题。IIS的控制面板中设置目录的匿名登录IUX_XXXXX用户改成Administrator