Ole自动控制对象的简单问题(50分)

  • 主题发起人 主题发起人 lights
  • 开始时间 开始时间
L

lights

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟初学OLE自动控制。我写了一个OLE自动控制服务器。
在客户端在VBScript中以如下代码调用。
Sub ShowLink(Url,Info)
On Error Resume Next
Set Obj=CreateObject("light.App")
if err<>0 then
MsgBox("类未注册")
Exit Sub
end if
call Obj.ShowUrl(Url, Info)
end sub
在使用时我发现,如果执行以上代码时,服务器程序没有运行,那么这
段代码执行后将关闭代码执行时所创建的自动控制服务器程序。
我想问的是,有什么办法能让VBScript中所创建的服务器程序在
VBScript执行结束后不被关闭(与上段代码VBScript无关)。
我的分不多了,给50分。
 
在服务程序初始化的时候将RefCount设置成1这样就不会自动关闭了
 
对不起老屯,前几天信箱出了些问题。所以没能及时收到你的回复。
能不能,烦你老人家给个例子。我写OLE自动控制纯属是为了救急,而我自己对这些问题并不太
懂。谢谢!例到付分。
 
求求你老屯回答我好吗?
你所说的那个RefCount是一个只读的属性,怎样将其置为1啊!
 
屯兄,怎么这么久不说话啊。
看来这个问题我只有自问自答了。希望您能原谅。
//以下代码是小钟提供的中国网爪中的这一块的源码。
unit AutoUnit;

interface

uses
Sysutils, ComObj, ActiveX, ChinaClaw_TLB, MainForm, HttpTask,
URLInputForm;

type
TAuto = class(TAutoObject, IAuto)
protected
function AddUrl(const Url, Comment, Referer: WideString): WordBool;
safecall;
function IsUrlExist(const Url: WideString): WordBool; safecall;
public
procedure Initialize; override;
end;

implementation

uses ComServ;

procedure TAuto.Initialize;
begin
inherited Initialize;
// IE启动本程序后不会自动结束
if ComServer.ObjectCount=2 then ObjAddRef;
end;

function MyAutomationTerminateProc: Boolean;
begin
Result:= True;
Halt; // 去掉Ole关闭时的英文警告信息
end;

function TAuto.AddUrl(const Url, Comment, Referer: WideString): WordBool;
begin
Result:= ChinaClawForm.AddUrl(Url,Comment,Referer);
end;

function TAuto.IsUrlExist(const Url: WideString): WordBool;
begin
Result:= False;
end;

initialization
TAutoObjectFactory.Create(ComServer, TAuto, Class_Auto,
ciMultiInstance, tmApartment);

AddTerminateProc(@MyAutomationTerminateProc);
end.
 
接受答案了.
 
后退
顶部