如何使用Marshal.getActiveObject()获取已打开两个进程的正在运行的进程的2个实例

目前我的代码使用

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

要获得一个名为surfer的软件的运行实例,为了简单起见,我们可以将Surfer替换为每个人都知道的Word。 现在假设我运行了2个MS word应用程序,并且我希望使用Marshal.GetActiveObject()来获取它们,如何获取两个正在运行的实例并将每个实例与一个单独的对象相关联?

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

一些开始的链接:

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

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