首页 新闻 赞助 找找看

如何调用当前进程中正运行的com组件自身已实例化、初始化的接口?

0
悬赏园豆:50 [已关闭问题]

目前用vc++开发了一个类似于微软office excel  com组件类型的应用,这个应用里的所有函数功能本身都做成了接口,想法是既可以自身在托盘程序里启动时加载这些功能,也能够提供给其他程序调用!!其本身托盘程序工作都正常的,就是在C#开发的网站里调用时,问题出来了,我们常规的使用都是要先实例化提供接口程序的类,然后调用面的方法,是可以调用,但问题也随之出来,由于new了一个新实例,和本机托盘程序不是一个实例,我想问下,用何办法可以调用目前已运行com组件实例化后的组件内部的接口等?代码该怎么写?或者我们开发的com组件需要做哪些调整?

例如我们平时的excel  com组件的调用:

Excel.Application excel = new Excel.Application ();
excel.Application.Workbooks.Add(true);  
excel.Visible = true ; 

我的一个调用:

PHCore2Lib.ApplicationMgrClass PHCoreSL = new PHCore2Lib.ApplicationMgrClass();

 PHCoreSL.Stream.Open();//这里如果使用PHCoreSL 实例里的Open()方法,就会又执行了一个PHCore2托盘程序,且和原先已经运行的程序不是同一个实例。

TextBox2.Text = PHCoreSL.Stream.GetAllInfos().ToString();

当然功能上时走通了,com 里GetAllInfos()方法的功能都能使用,但和本机托盘程序运行的不是同一个实例。如何调用当前进程中正运行的com组件自身已实例化、初始化的接口?

 

问题补充: 如何用C#调用一个已经存在的接口? 我用vc++开发了一个类型如微软office excel的com组件应用,这个应用里的所有函数功能本身都做成了接口,想法是:既可以自身在托盘程序里启动时加载这些功能,也能够提供给其他外部程序调用!!其自身托盘程序工作都正常的,就是在C#开发的网站(asp.net)里调用时,我们常规的com组件调用都是要先实例化提供接口程序的类,然后调用里面的方法,像这样调用功能都可以走通,但问题也随之出来了,由于new了一个新实例,和本机运行的托盘程序不是一个实例,与需求不符!我想问下,用何办法可以调用目前已运行com组件实例化后的组件内部的接口?代码该怎么写?或者现在开发的com组件需要做哪些调整? 例如:我们平时的excel com组件的调用: Excel.Application excel = new Excel.Application (); excel.Application.Workbooks.Add(true); excel.Visible = true ; 我的一个com调用: PHCore2Lib.ApplicationMgrClass PHCoreSL = new PHCore2Lib.ApplicationMgrClass(); PHCoreSL.Stream.Open();//这里如果使用PHCoreSL 实例里的Open()方法,就会又执行了一个PHCore2托盘程序,且和原先已经运行的程序不是同一个实例。 TextBox2.Text = PHCoreSL.Stream.GetAllInfos().ToString(); 当然功能上时走通了,com 里GetAllInfos()方法的功能都能使用,但和本机托盘程序运行的不是同一个实例。如何调用当前进程中正运行的com组件自身已实例化、初始化的接口?
飄渺☆孤鴻影的主页 飄渺☆孤鴻影 | 初学一级 | 园豆:100
提问于:2009-09-24 10:33
< >
分享
其他回答(1)
0

这个问题简单,你可以把已经存在的对象序列化一个文件或者数据库中,然后你的其他程序运行的时候检查一下,如果存在的话,就在从序列化的文件或者数据库中创建对象就可以了。

觉知的凡夫 | 园豆:468 (菜鸟二级) | 2009-09-24 10:44
0

这样的应用不好做吧 ,最好想别的办法解决,你托盘里边的是一个进程 ,你要从一个进程里边访问另外一个进程实例化的对象 貌似是不允许的 ,除非你把托盘进程里边的东西做成一个接口,比如读取某些参数 他就可以做某些动作  然后你写另外一个进程去改参数就ok了 一般我们都这么做 直接调用实例化的对象 好象是不行的 .

你这个设计到进程通信嘛

可以用API做啊

你的外部程序发Windows消息到托盘程序

楼兰帝释天 | 园豆:210 (菜鸟二级) | 2009-09-26 17:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册