c#写的exe,启动时,如何将自己加入到全局程序集缓冲中?

程晨c 2015-09-18 11:55:11
c#写的exe,启动时,如何将自己加入到全局程序集缓冲中,让别的程序来调用。

也就是说别的程序调用我这个exe的接口时,不需要CreateObject,只需要GetObject,
也就是说不需要实例化我的exe,而是直接跟这个exe通信
...全文
218 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
程晨c 2015-09-18
  • 打赏
  • 举报
回复
高手们,快来指点指点!
natangpu36 2015-09-18
  • 打赏
  • 举报
回复
来支持一下,谢谢楼主分享
程晨c 2015-09-18
  • 打赏
  • 举报
回复
引用 10 楼 dongxinxi 的回复:
如果你的exe在运行,也不需要createobject了,直接上 Microsoft.VisualBasic.Interaction.GetObject()或者Marshal.GetActiveObject(progID)就行了
不行的,exe在运行 但无论vb还是c#都不能getobject的 也许是因为没有启动ole服务 请教该如何启动ole服务
程晨c 2015-09-18
  • 打赏
  • 举报
回复
我暂时的理解是这样的 多个exe调用同一个com或dll时,每个exe将拥有一份属于自己的com或dll的实例, 这些exe不可能共享同一个com或dll的实例 即使com或dll是用单例模式编写的,也不可能由多个exe共享同一个com或dll实例 单例模式的dll或com只会正对一个exe有单例效果 ======================================================================= 但是还有另外一个问题 为什么word启动后,就可以直接GetObject调用 而没有启动的话,如果调用就需要先createobject word在启动时,做了什么 我们该如何模仿word的启动,使得我们的exe在启动后,别人也可以直接GetObject,而无需createObject
Poopaye 2015-09-18
  • 打赏
  • 举报
回复
8楼大神
程晨c 2015-09-18
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
.net 程序可以发布为 com 组件,供 vba 等等程序去 CreateObject/GetObject 之类的。如果你搜索网页,可能找2005年以前的网页还是有那么一点点介绍的。 不过,如果你看10年前的任何一本 .net 的大部头的入门书,例如有名的“红皮书”,里边应该有一章相当篇幅是讲这个的。所以如果你手边有个前些年的工具书,不要荒废了。
.net 程序发布为 com 组件,供 vba 等等程序去 CreateObject/GetObject 。 这个没有难度,问题不在这里 问题是,com如何在不被某exe CreateObject的情况下,而直接GetObject
程晨c 2015-09-18
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
CreateObject/GetObject,都是COM时代的模式,而且需要注册。 你需要自己搜索有关“编译且发布为COM组件”的概念。基本行可以说,没什么程序员还干这个事儿,不足千分之一。因此比较难得到答案,只有自己搜索。
com的编写、注册、都没有问题了 现在的问题是,同一个com的实例能否被多个exe共享,如果能,如何实现
程晨c 2015-09-18
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
[quote=引用 楼主 seleron 的回复:] c#写的exe,启动时,如何将自己加入到全局程序集缓冲中,让别的程序来调用。 也就是说别的程序调用我这个exe的接口时,不需要CreateObject,只需要GetObject, 也就是说不需要实例化我的exe,而是直接跟这个exe通信
你发错板块了。去到asp版去问问吧。 如果你说你的所谓“全局程序集缓冲”就是指.net 的 GAC的话,那么你后边的应用设计则完全不是.net 应用的了。所以也无法理解和回答。[/quote] 是c#的问题,不是asp的问题
  • 打赏
  • 举报
回复
如果你的exe在运行,也不需要createobject了,直接上 Microsoft.VisualBasic.Interaction.GetObject()或者Marshal.GetActiveObject(progID)就行了
  • 打赏
  • 举报
回复
如果VB中的getObject可以,那么C#中的getActiveObject就可以,不行你可以试试
  • 打赏
  • 举报
回复
Marshal.GetActiveObject(progID)
  • 打赏
  • 举报
回复
看都没看懂,哎……
  • 打赏
  • 举报
回复
.net 程序可以发布为 com 组件,供 vba 等等程序去 CreateObject/GetObject 之类的。如果你搜索网页,可能找2005年以前的网页还是有那么一点点介绍的。 不过,如果你看10年前的任何一本 .net 的大部头的入门书,例如有名的“红皮书”,里边应该有一章相当篇幅是讲这个的。所以如果你手边有个前些年的工具书,不要荒废了。
ajianchina 2015-09-18
  • 打赏
  • 举报
回复
看到楼主也是戴妃的老粉丝,他提出的两个问题如果合起来只能让我觉得自己懂得还很浅薄。
  • 打赏
  • 举报
回复
CreateObject/GetObject,都是COM时代的模式,而且需要注册。 你需要自己搜索有关“编译且发布为COM组件”的概念。基本行可以说,没什么程序员还干这个事儿,不足千分之一。因此比较难得到答案,只有自己搜索。
  • 打赏
  • 举报
回复
引用 楼主 seleron 的回复:
c#写的exe,启动时,如何将自己加入到全局程序集缓冲中,让别的程序来调用。 也就是说别的程序调用我这个exe的接口时,不需要CreateObject,只需要GetObject, 也就是说不需要实例化我的exe,而是直接跟这个exe通信
你发错板块了。去到asp版去问问吧。 如果你说你的所谓“全局程序集缓冲”就是指.net 的 GAC的话,那么你后边的应用设计则完全不是.net 应用的了。所以也无法理解和回答。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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