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方法用问题,请各位给我指指路!!谢谢!
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方法用问题,请各位给我指指路!!谢谢!
Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!Up!!!!!!!!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!UP!
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;
和 你要解决的问题方法有毛病,这不应该是COM干的活,ComServ中主要是Serv的,
你在用应用思想去实现服务的功能,呵呵,