我写了个MFC自动化双接口程序,要在网页中用脚本语言调用,怎样限制其只产生一个实例

Bowater 2005-10-20 10:52:57

GetActiveObject
RegisterActiveObject
RevokeActiveObject
的方法不行
因为脚本语言不能调用API


怎么办呀?
...全文
244 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
manand 2006-03-01
各位我用ATL做了个COM自动化组件,它包容了别的组件

奇怪的是用ASP调用时读的值总是0,没有任何出错信息

同一组件同一时间用VC客户端调一点没问题。这是为啥呀

我的QQ17365542想和这方面的专家好好谈谈必有重谢
回复
Analyst 2005-10-29
再写个COM对象,让脚本通过这个对象得到你想要的单件对象。这样你就可以用C++来实现单件了。
像这样:
creator = new ActiveXObject("BookView.Creator");
Document = creator.CreateDocument();

在CreateDocument函数里用GetActiveObject返回你的BookView.Document对象就行了。
回复
horris 2005-10-25
将组件缓存在Session里会极大地影响IIS的效率,微软明确反对这种做法,CSDN文档里有翻译。
应该用Singleton实现。
回复
lemon_wei 2005-10-25
你在首页创建这个对象,然后把这个对象保存到Session里面,以后调用时调用这个Session就是了。比如
set objCatcher=GetObject("BookView.Document")
Session("MyObj") = objCatcher

以后使用 Session("MyObj") 就是了
回复
Bowater 2005-10-21
C++里管用
CoInitialize(NULL);
CLSID clsid;
if(SUCCEEDED(CLSIDFromProgID(OLESTR("BookView.Document"),&clsid)))
{
IUnknown* pUnknown;
HRESULT rs=::GetActiveObject(clsid,NULL,&pUnknown);
if(rs==S_OK)
{
}
}
脚本里不管用
<script language="VBScript">

Sub OnContextMenu()
On Error Resume Next
set objCatcher=GetObject("BookView.Document")
if err<>0 then
err=0
set objCatcher=CreateObject("BookView.Document")
end if
if err<>0 then
Alert("error!")
else
objCatcher.ViewString(external.menuArguments.document.selection.createRange().text)
end if
end sub

Call OnContextMenu()
</script>
回复
Bowater 2005-10-21
我查MSDN里在脚本里GetObject (“ProgID”) =
C++里
CLSIDFromProgID
GetActiveObject on class ID.
QueryInterface to get IDispatch interface.

可是也不行,用C++编的客户端可以实现一个实例,但是JScript和VBScript编的用GetObject不管用
回复
Bowater 2005-10-21
脚本程序中只调用一次new ActiveXObject
而这个脚本程序回被多次调用,希望每回调用都返回同一个
就好像用flashget下载,在浏览器右键菜单中多次点下载这个链接,而不会开多个flashget实例
我的软件就是类似FlashGet这种情况
回复
wshcdr 2005-10-21
You can treat the new ActiveXObject as a new alias of an existing object, attach to the object and redirect all operation to it.

///////////////////////
呵呵,典型的Singleton模式
回复
zxyjyzxyjy 2005-10-21
脚本语言里不能缓存对象吗?
回复
蒋晟 2005-10-21
You can treat the new ActiveXObject as a new alias of an existing object, attach to the object and redirect all operation to it.
回复
Bowater 2005-10-20
希望每回调用new ActiveXObject时都返回同一个实例
回复
发帖
ATL
创建于2007-09-28

3214

社区成员

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
申请成为版主
帖子事件
创建了帖子
2005-10-20 10:52
社区公告
暂无公告