各位高手帮看一下>怎样通过COM口方法,使一个程序调用另一个程序中功能?

aqua_aqua 2002-05-11 03:28:28
我有一个小程序A,我想通过另一个程序B来控件它。
我的想法是把在A程序中加上接口IA,在程序B中调用接口IA不就能控件A了吗?但是要怎样在A程序中加上接口IA呢?

...全文
130 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
aqua_aqua 2002-05-11
  • 打赏
  • 举报
回复
好。共同努力吧。
liurekewa 2002-05-11
  • 打赏
  • 举报
回复
loyee真是金玉良言,我想也是的 ,我现在的重点就是搞清其架构,我打算在下一遍再注意其实现细节。
丁丁朋友,让我们一起努力!
aqua_aqua 2002-05-11
  • 打赏
  • 举报
回复
多谢loyee的教导。
aqua_aqua 2002-05-11
  • 打赏
  • 举报
回复
我也是那本COM原理和应用我已经看两遍了,还看了ATL开发指南。可是还是感觉有好多懂。
loyee 2002-05-11
  • 打赏
  • 举报
回复
学COM的朋友,学别人的一句话,"罗马不是一天建成的".你们现在的COM知识可能离应用它有一定距离.不要只在想用的时候才想到问别人.花些时间在搞懂它的框架结构上.建议从基础开始,可以看看MSDN中COM的介绍.别怕麻烦.参考其中的一些教程,自己一步一步来.在微软站点上可以找到很多这方面的资料.开始学的时候若急于想用在工程中,问题还会很多.虽然这是大家一直用这样的方式来学新东西.但COM作为WINDOWS体系中的精髓部分,要学它还是先看理论吧.
liurekewa 2002-05-11
  • 打赏
  • 举报
回复
COM的东西太深奥了,我现在开始学第二遍了 ,只是勉强看得懂。却不会用!
liurekewa 2002-05-11
  • 打赏
  • 举报
回复
我是正在准备还没开始做?
让你失望了!
其实我的目的也是一样,我想作个AxtiveX控件供另一个同学使用,他用的是VB.
而我的控件主要是封装数据源配置的功能.所以我想要知道怎样才能在我的控件里面操控数据源管理器!
aqua_aqua 2002-05-11
  • 打赏
  • 举报
回复
啊,总算找到志同道合的,我是想把我的一个工程中的功能包装成COM,但是总是找不方法,今天有个同学要用到我工程中的东西,他是用VB的,而我用的是VC,所以我就想如果我把我的工程加上COM口,那VB不就能访问了吗?于是我就这么做了,我是用VC测的,可惜,老是出现运行时错误。所以我想是我在工程A中加COM口的方法不对,所以一直在这求教,都一下午了,也没什么结果,刚才小飞象说的,我正在看。不知道行不行。
: liurekewa(牛牛) :
你做的怎么样?可以讨论讨论吗?
liurekewa 2002-05-11
  • 打赏
  • 举报
回复
如果我要调用一个应用程序的一些方法.但我又不知道这个应用程序到底有哪些方法,除了它运行时的界面,其他的我一无所知时!我该怎么办!
或者说我想用别的程序来操控现有程序!而且不能让该程序的界面呈现出来,这该如何做?
aqua_aqua 2002-05-11
  • 打赏
  • 举报
回复
在一本文章里,我看到了这样的一段文字 。
应用程序之间互相通讯的几种方法 :
1。共享
2。DDE
3。wm_copydata
4、NetBIOS
5、标准的Sockets和WinSock
6、Mailslot和Pipe
7、剪贴板(Clipboard)
8、COM和DCOM

  公共对象模式(COM)是一种协议,它建立了一个软件模块同另一个软件模块之间的连接,然后将其描述出来。当这种连接建立起来之后,则两个模块之间就可以通过称为“接口”的机制来进行通讯。COM可以用不同的语言(VB、VC、Delphi)进行编制,又能被其它语言编写的程序所使用,并且不用管通讯双方实际所处的位置(是在同一台机上,还是在同一个网络上的不同机上)。事实上,Internet上有大量的COM控件可供人们下载使用,其中有相当一部分就是用于应用程序间的相互通讯(甚至是Internet程序间的通讯),硬盘上能够看到的大量的.ocx文件其实就是一种COM。

  COM对象为外部调用提供了一个标准的界面,COM Client通过创建COM Server的一个实例获得指针,转向所需的函数定义处并执行相应的程序。讲得通俗一点,也就是先正确定义好COM对象的属性(Property),再执行相应的方法(Method)。



===================================================
各位看到没,关于COM是进行进程间通信的一种方式,这里就这样一带而过,没有任何实质的东西,所以我想请教各位高手。
: xfeixiang(小飞象) 说的我正在看,不过要先谢谢了。

xfeixiang 2002-05-11
  • 打赏
  • 举报
回复
在A中调用RegisterActiveObject注册你的IA
在B中调用GetActiveObject来获取IA接口完成你的操作。
查查MSDN中的帮助了解详细的使用。
aqua_aqua 2002-05-11
  • 打赏
  • 举报
回复
: opentuxedo(开缝的燕尾服) (
噢,主要是因为我的那个工程已经做好了,不想再从做了,另外我用的是ATL。还希望多多指教。
opentuxedo 2002-05-11
  • 打赏
  • 举报
回复
当然可以,但是不如用向导生成一个新程序方便
aqua_aqua 2002-05-11
  • 打赏
  • 举报
回复
: opentuxedo(开缝的燕尾服) (
没法在现有的工程上加吗?我要调用的是在A的功能。
opentuxedo 2002-05-11
  • 打赏
  • 举报
回复
这不是一句话能说明白的。
要看你的程序是什么样的?你是要在B中控制A的界面呢?还是调用A的几个函数呢?无论如何你要先选择一个apartment,然后把A的代码转移到里面
aqua_aqua 2002-05-11
  • 打赏
  • 举报
回复
: focus(老鱼)
老兄,说详细点,你的意思太深奥了。
aqua_aqua 2002-05-11
  • 打赏
  • 举报
回复
为什么没人呀。人哪?
aqua_aqua 2002-05-11
  • 打赏
  • 举报
回复
诸位能再说一下吗?
aqua_aqua 2002-05-11
  • 打赏
  • 举报
回复
TO AlexXXX((梦)) :
能说的详细点吗?
我在是这样做的,在工程A里加了ATL支持,这样就有了个接口,在工程B里我就可以调用这个接口了,但是不知道为什么,工程B一创建这个接口,机器就进入忙状态。下面就要不行了。你能贴个例子吗?;
AlexXXX 2002-05-11
  • 打赏
  • 举报
回复
写一个COM组件的空壳就行:
1.首先建立一个COM工程
2.添加一个接口,将你想引出的方法加入其中
3.在接口方法的实现中调用你的A程序。
OK!
加载更多回复(2)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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