求:建立对操作系统全局唯一 Com 实例的方法

deavilness 2005-03-12 02:00:53
现有需要,在操作系统中建立唯一的一个 Automation Object 实例,冥思苦想、埋头苦干7天毫无进展,总是 CreateObject 了,又无法控制其 Release,已吐血数升。现请求各位大侠帮忙,感谢感谢。
...全文
145 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
caiso 2005-03-14
  • 打赏
  • 举报
回复
顶一下
alphax 2005-03-13
  • 打赏
  • 举报
回复
>>2,楼主做全局唯一的目的是有东西需共享状态,事实上,并不等于整个COM实例需要共享。。

这个解决思路最好
halfdream 2005-03-13
  • 打赏
  • 举报
回复
楼主,
其实说了这么多,解决问题在一个关键:绕开RPC,不管具体你用哪种方法。
楼主做COM的时候也可以自定义marshaling,那时候多半也要用上SOCKET。
halfdream 2005-03-13
  • 打赏
  • 举报
回复
1,WINDOWS对COM支持的平台不直接支持这样做。这同跨进程COM或DCOM底层的机制有些关系,
它们要受进程安全管理。。每个进程都是属于特定用户的,ADMINISTRATOR用户不会访问到
SYSTEM用户启动的COM。。

不过仍然有一些办法。。

2,楼主做全局唯一的目的是有东西需共享状态,事实上,并不等于整个COM实例需要共享。。

3,做成COM的目的之一应该是让客户端容易用简单而统一的方式调用。系统级的服务很多是用
SOCKET,管道等方式提供,使用COM封装实现协议透明化。

4,那种方案不是我创的,微软早就这样做了。

real_name 2005-03-13
  • 打赏
  • 举报
回复
要用上SOCKET 吧
S.F. 2005-03-12
  • 打赏
  • 举报
回复
DCOM行不?
eastliangliang 2005-03-12
  • 打赏
  • 举报
回复
要这样啊。
这个全局唯一的东西一定要做成COM的吗?换个实现方法怎么样,别一棵树上吊死。
deavilness 2005-03-12
  • 打赏
  • 举报
回复
To real_name(*真名):
我第一次就是这么做的,可是没用,com 只对进程空间有效,到另外一个进程,便会创建一个新的 com 实例。

To halfdream(哈欠):
老兄……真不知道该怎么评价你的方案……既然能做 socket,为什么不干脆搞个 webservice 算了?能不通过网络,就在本机上实现单一实例的目标吗?
halfdream 2005-03-12
  • 打赏
  • 举报
回复
我给你提一种方案:

你这个需要的东西可以划分为两部分。
1,内核部分,做成WINDOWS SERVICE,以系统用户方式运行,用SOCKET方式提供功能。
2,COM部分,将功能请求用SOCKET转发给内核部分。。

real_name 2005-03-12
  • 打赏
  • 举报
回复
把你的 Com 嵌套到另外一个 Com 里去,让 客户端连接 第2 个com ,
第2 个com 再创建第1个com
deavilness 2005-03-12
  • 打赏
  • 举报
回复
To eastliangliang(青苹果):

我也正是这么做,可是 Com 对象的 Release 取决于客户端,而不是我的程序。所以当没有客户端连接的时候,com 就自动 Release 了!注意,是自动 Release!我无法控制啊!
eastliangliang 2005-03-12
  • 打赏
  • 举报
回复
我怎么觉得一共就一个实例。不是它自己维护一个引用指针,当引用为0时自动销毁的么?
g961681 2005-03-12
  • 打赏
  • 举报
回复
不会!帮你顶吧!

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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