关于在服务程序中暴露一个com对象的问题?

findcsdn 2004-11-09 03:49:03
我写了一个服务程序(标准的window服务),服务程序会实例一个com对象,但是现在遇到一个麻烦,就是,客户程序如何引用这个com对象?

本来想用RegisterActiveObject注册一个com对象然后用GetActiveObject获取接口指针的,但是调试后发现服务程序运行的桌面和用户使用的桌面不再同一个workstation中,所以GetActiveObject获取的总是为nil, 一筹莫展,各位com高人帮提提意见吧,不胜感激。
...全文
101 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
findcsdn 2004-11-11
  • 打赏
  • 举报
回复
想到新办法了:原来服务运行在交互状态的时候是可以有窗口的,所以我就不必再开另外的程序了,直接从服务程序中运行配置窗口就ok了,谢谢各位关注!
Magnus 2004-11-10
  • 打赏
  • 举报
回复
up
horris 2004-11-10
  • 打赏
  • 举报
回复
把COM对象实现为Singleton
findcsdn 2004-11-10
  • 打赏
  • 举报
回复
up
findcsdn 2004-11-09
  • 打赏
  • 举报
回复
新情况:

我现在将服务的启动账号的选择"本地系统账户"并且选中"允许桌面交互"后,发现服务程序使用的是“WinSta0\Default”和一般程序使用的是相同的workstation和desktop。按照msdn的说法,他们共用的是同一个Rot(running object table).可是我现在调用GetActiveObject还是无法取得服务中RegisterActiveObject注册的类接口。 郁闷死了!哪位帮帮我,多谢拉!

msdn: "Each workstation has a local ROT that maintains a table of the objects that have been registered as running on that machine. This function returns an IRunningObjectTable interface pointer, which provides access to that table. "
aspnetwuxueyou 2004-11-09
  • 打赏
  • 举报
回复
mark
findcsdn 2004-11-09
  • 打赏
  • 举报
回复
其实本来就是为了实现客户端和服务程序的通讯问题,但是这种通讯比较复杂,用socket或者其他的似乎工作量太大,用com接口(函数调用)我觉得比较方便。

3,245

社区成员

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

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