我有一个第三方应用程序,我可以在其中通过 VBScript 编写脚本。现在我想从中调用一个正在运行的 .NET 应用程序。如果我想用 COM 做到这一点,我必须使用ExeComServer
. 问题是这在我的工作流程中是不可能的。由于强名称,COM+ 服务器也是不可能的。
我不得不将一个对象从 VBScript 转发到 .NET。
如果 COM 不适合您,您可以尝试使用 VBScript 中的套接字,但您会遇到各种问题。您可以购买一些基于第 3 方 COM 的套接字库,但我从未使用过,因此我不推荐其中任何一个。您的 .NET 应用程序还必须进行大量修改以侦听端口并与您的脚本进行通信——这将是一些工作。
我能想到的另一个可能的选择是在 .NET 中创建一个支持 COM 的 .dll,它为您实现套接字逻辑并与您的 .NET 应用程序对话。然后,您可以从 VBScript 创建此对象的实例并通过 COM 与它对话。然后,您的 .dll 将使用套接字与 .NET .exe 对话。这会在套接字的末端为您提供 2 个 .NET 对象 - 在 .NET 中实现这一点更容易。你仍然需要改变你的主 .exe 来监听一个套接字。
这有点复杂,因为 VBScript 被设计为使用 COM - 您不使用 COM 的要求是您可以做的限制因素。(即使我的想法会涉及一个 COM 对象,但至少它会消除对 EXE COM 服务器的要求。)可能有更简单的选择——这只是我的想法。
One way to call a running .NET application would be to expose a WCF service from the .NET application. VBScript can call web services, e.g. using the XMLHTTP object.
On the other hand, you also said:
I had to forward an object from VBScript to .NET.
If by this you mean marshal a COM object, I don't think you have any alternative but to use COM.