12

目前我的代码使用

SurferApp = Marshal.GetActiveObject("Surfer.Application") as Surfer.Application

为了得到一个叫做surfer的软件的运行实例,为了简单起见我们可以把Surfer替换成大家都知道的Word。现在假设我有 2 个 MS word 应用程序正在运行,我想让它们都使用Marshal.GetActiveObject(),我怎样才能获得两个正在运行的实例并将每个实例与一个单独的对象相关联?

4

2 回答 2

13

Marshal.GetActiveObject 返回它在 ROT(运行对象表)上找到的第一个实例。如果您有多个实例以相同的名称/ID 运行,则必须直接从 ROT 获取。

几个链接开始:

于 2012-11-17T16:01:31.720 回答
3

除了已接受答案中的链接之外,我发现以下内容对于走 ROT 非常有帮助,特别是如果您感兴趣的应用程序是 AutoCAD:

http://adndevblog.typepad.com/autocad/2013/12/accessing-com-applications-from-the-running-object-table.html

于 2015-01-26T23:45:17.500 回答