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

Bowater 2005-10-20 10:52:57

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


怎么办呀?
...全文
291 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
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时都返回同一个实例

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧