使用 COM 适合我吗?

Posted

技术标签:

【中文标题】使用 COM 适合我吗?【英文标题】:Is using COM right for me? 【发布时间】:2011-10-03 18:16:27 【问题描述】:

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

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

我可以使用 COM 执行此操作还是必须修改现有的 VB6 代码?

【问题讨论】:

不清楚。道路是:VB6 调用 C# 调用某些东西或 C# 调用 VB6 或其他东西......而“我需要调用一个函数”......它是哪种语言? 除非 VB6 代码已经是一个 com 对象,即组件,否则我认为您将不得不以某种方式进行修改。要么将其作为 com 对象公开,要么将其调用作为 com 对象公开的 .Net 代码。 为简单起见,如果两个应用程序在同一台机器上运行,您可以使用 DDE,这种方法有点过时,但非常简单。 【参考方案1】:

您需要在 VB6 中将函数公开为 COM (ActiveX DLL)。这是直截了当的。 http://vb-helper.com/howto_activex_dll.html

调用 COM 对象也很容易。 http://www.c-sharpcorner.com/UploadFile/psingh/CallingCOMComponentFromCSharp12022005231615PM/CallingCOMComponentFromCSharp.aspx

【讨论】:

【参考方案2】:

在我看来,您有一个不应更改其源代码的 VB6 应用程序。现在每次调用 VB6 应用程序中的方法时,您还希望调用另一个组件 (C#) 中的方法。

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

如果是这种情况并且您无法更改 VB6 应用程序,那么您可能可以使用COM Channel Hooks 做一些事情(假设 VB6 应用程序由 COM 对象组成)。

但这将使用 C++ 和低级 COM,这可能是您不想做的事情。

【讨论】:

【参考方案3】:

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

我使用 .NET Remoting 来替换某些应用程序中的 DCOM,方法是创建一个可调用 COM 的 .NET 库来充当客户端,远程处理对象托管在 .NET 应用程序中。您的 VB6 应用程序使用对象,方法在服务器上执行。

但是您将不得不修改您的 VB6 应用程序,至少稍微修改一下,以将新调用注入到您的 .NET。您能否更清楚地了解不更改 VB6 应用程序的要求?

【讨论】:

以上是关于使用 COM 适合我吗?的主要内容,如果未能解决你的问题,请参考以下文章

我需要年轻而动感的音乐 需要在足球场上奔腾驰骋的快乐 你能给我吗 朋友!!!

无法识别的选择器发送到实例 - 有人可以帮助我吗?

discuz收录问题?是不是适合优化。

我无法在我的模拟器上运行这个应用程序有人能帮我吗

UIImage 调整大小并裁剪以适合

使用地理位置获取用户的状态