2011-10-03 51 views
0

我的工作有一个用VB6编写的应用程序。我的任务是用C#.NET编写另一个不同的应用程序。我不允许更改VB6代码,但每次在VB6应用程序中调用某个特定函数时,都需要调用一个函数(从我的.NET应用程序)。使用COM适合我吗?

我的老板建议使用COM或DCOM来完成这个任务。我对这些主题都不熟悉,并且无法找到可以轻松理解并且与我的任务相关的教程。

我能做到这一点使用COM或我将不得不修改现有的VB6的代码?

+3

目前还不清楚。道路是:VB6调用C#调用某些东西或C#调用VB6或其他东西...而“我需要调用一个函数”......它是哪种语言? – xanatos

+2

除非VB6代码已经是com对象,也就是组件,我认为你将不得不以某种方式进行修改。要么将它作为一个COM对象公开,要么将.Net代码作为COM对象公开。 – user957902

+0

为简单起见,如果两个应用程序在同一台计算机上运行,​​则可以使用DDE,但方法有些过时,但非常简单。 – NickD

回答

1

在我听起来像你有一个VB6应用程序的源代码不应该被改变。现在,每次调用VB6应用程序中的某个方法时,您还需要调用另一个组件(C#)中的方法。

以上是一个假设,因为你的问题是不是100%清楚。

如果是这样的话,你不能改变VB6应用程序,那么你可能能够做到用COM Channel Hooks东西(假设VB6应用程序是由COM对象)。

但是,这将是使用C++和COM水平低,这可能是你不想要做的事。

0

认为你是问有关从VB6 应用内从C#应用调用的方法。所以我们正在谈论某种形式的进程间通信(因此有关DCOM的评论)。

我使用.NET远程通过创建一个COM可调用.NET库,以作为与.NET应用程序被托管的远程对象的客户端,以取代DCOM在某些应用中。您的VB6应用程序使用这些对象,并在服务器上执行这些方法。

但是您将不得不修改您的VB6应用程序,至少有一点是要将新调用注入到您的.NET中。你能更清楚地了解不改变VB6应用程序的要求吗?