【问题标题】:Call a function of the COM server .exe using C# or JAVA使用 C# 或 JAVA 调用 COM 服务器 .exe 的函数
【发布时间】:2019-02-13 19:01:41
【问题描述】:

我有一个非常旧的 .exe COM 服务器,它不是在 .net 中制作的。 我想知道是否可以使用 C# 或 Java 访问 .exe 的功能。我试图在项目中引用服务器,但我得到的是这个错误:

无法添加对 ... 的引用。无法注册 ActiveX 类型库...这不是 .NET 程序集。

我对此并不聪明,你怎么看,我应该往哪个方向走? 通常我总是添加对 .dll 的引用,但我认为不可能添加对 .exe 文件的引用。

谢谢

【问题讨论】:

  • 很有可能,并且有一些库可以帮助您做到这一点——您搜索过什么,尝试过什么?
  • 您好,我尝试从 cmd 运行 .exe,我想如果我能做到,我也可以从项目中做到这一点。但这没有成功,或者我做错了什么。另一种尝试是将 .exe 放在项目文件夹中,并通过
     object CheckCom=Activator.CreateInstance(Type.GetType("CheckCom.Command")); 在项目中创建 .exe 对象文件的实例。  为此,我必须以某种方式引用该对象,否则我有构建错误并且我无法使用对象函数 (CheckCom.function) 哪些库可以帮助我做到这一点?
  • 我还尝试运行进程管理器来检查 .exe 是否具有公共功能,并且看起来这些功能存在。那么现在的问题是如何在 VS C# 或 JAVA 中添加它的引用?
  • 我想到的也是。 .exe 运行后,使用托管 C# 应用程序或 JAVA 应用程序使用项目在该进程上执行特定的公共功能?如果是这样,我应该怎么做?
  • 我已经检查过了,.exe 是用 Visual Basic 6.0 编写的。有没有办法通过 VB6.0 .exe 使用 pinvoke?

标签: java c# reference com activex


【解决方案1】:

在google和阅读了一些文档之后,我想出了如何添加本机COM exe作为参考,将其转换为CLR程序集后即可。 此 .exe 不是用 .net 编写的,因此不能作为参考添加。要将其转换为托管程序集,我在 Visual Studio 命令提示符下使用了 Tlbimp.exe。

https://docs.microsoft.com/en-us/dotnet/framework/tools/tlbimp-exe-type-library-importer

【讨论】:

    猜你喜欢
    • 2011-11-10
    • 2011-06-23
    • 2023-03-25
    • 1970-01-01
    • 2014-05-06
    • 2017-08-30
    • 1970-01-01
    • 2014-03-20
    • 2016-06-20
    相关资源
    最近更新 更多