【问题标题】:Connecting to a Com interface with two VBScripts使用两个 VBScript 连接到 Com 接口
【发布时间】:2015-11-25 19:21:58
【问题描述】:

我正在尝试连接到公开 COM 接口的应用程序。 我的 VbScript 代码如下所示:

  Set App = CreateObject( "Starter.Application")
  Set Measurement = App.Measurement
  WScript.ConnectObject App, "App_"

  If Measurement.Running Then
      Measurement.Stop
  End If

这使我可以控制 Starter-Application 中的变量。

我现在要做的是将另一个应用程序连接到同一个 COM 接口,以影响应用程序中的其他变量。自然,当我使用 CreateObject 命令启动应用程序时,我得到了应用程序的一个新实例。

如何连接到已经用另一个脚本创建的同一个实例?

【问题讨论】:

  • 您必须使用 GetObject() 连接到现有实例。这是否可能以及您需要作为参数传递的内容都需要使用电话。

标签: vbscript com


【解决方案1】:

问:我如何连接到已经用另一个脚本创建的同一个实例?

A:让您的 COM 服务器成为“进程外”.exe:

https://msdn.microsoft.com/en-us/library/Aa242100%28v=VS.60%29.aspx

https://msdn.microsoft.com/en-us/library/windows/desktop/ms683835%28v=vs.85%29.aspx

注意:

如果您的 COM/ActiveX 应用程序已经超出进程 - 但没有像您需要的那样“共享”状态,您可以创建自己的 VB6 进程外 exe 来“包装”原始应用程序。

【讨论】:

  • 似乎对我不起作用。现在用 python 复制它。
  • 多个 COM/ActiveX 客户端完全可以共享状态。一种常见的方法是使用“进程外 COM 服务器”,实现为“单例”。也许您可以将您的应用程序修改为“进程外单例”。否则,您可以编写自己的(例如 VB6 或 C++/ATL)应用程序,该应用程序 IS 是一个单例,并且只为您的 VBS(或 Python)“包装”应用程序的单个共享实例!) 客户端脚本:stackoverflow.com/questions/11817822/….
  • 您是否在 COM 服务器中使用 flags=REGCLS_MULTIPLEUSE 调用了 CoRegisterClassObject?
猜你喜欢
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多