Das Verständnis der Running Object Table

Ich bin versucht, die Tabelle der ausgeführten Objekte zu bekommen, einen Tee einer bestimmten Instanz von Visual Studio. Ich war die beabsichtigen, die Verwendung der beschriebenen Technik auf MSDN. Ich habe es geschafft, eine der Instanzen Liste, aber die anderen nicht.

public static void PrintRot()
{
    IRunningObjectTable rot;
    IEnumMoniker enumMoniker;
    int retVal = GetRunningObjectTable(0, out rot);

    if (retVal == 0)
    {
        rot.EnumRunning(out enumMoniker);

        IntPtr fetched = IntPtr.Zero;
        IMoniker[] moniker = new IMoniker[1];
        while (enumMoniker.Next(1, moniker, fetched) == 0)
        {
            IBindCtx bindCtx;
            CreateBindCtx(0, out bindCtx);
            string displayName;
            moniker[0].GetDisplayName(bindCtx, null, out displayName);
            Console.WriteLine("Display Name: {0}", displayName);
        }
    }
}

[DllImport("ole32.dll")]
private static extern void CreateBindCtx(int reserved, out IBindCtx ppbc);

[DllImport("ole32.dll")]
private static extern int GetRunningObjectTable(int reserved, out IRunningObjectTable prot);

Hier sind die Ergebnisse:

Display Name: !VisualStudio.DTE.11.0:7120
Display Name: clsid:331F1768-05A9-4DDD-B86E-DAE34DDC998A:
Display Name: !{7751A556-096C-44B5-B60D-4CC78885F0E5}
Display Name: c:\users\dave\documents\visual studio 2012\Projects\MyProj\MyProj.sln
Display Name: !{059618E6-4639-4D1A-A248-1384E368D5C3}

Ich würde erwarten, um zu sehen, mehrere Linien mit VisualStudio.DTE-Was mache ich falsch? Was sollte ich erwarten?

Edit:

Scheint es in Verbindung damit, ob die app läuft, Ihre Privilegien. Wenn ich mich konsequent und verwenden Sie den normalen Modus, dann funktioniert es. Allerdings würde ich es mögen, zu arbeiten, unabhängig davon, wie bekomme ich das ROT für alle Prozesse?

  • Funktioniert gut, wenn ich es versuche.
  • sind Sie mit einer anderen Instanz erhöht? sind Sie runnign diese exe erhöht?
  • wie sehen Sie Ihre Ergebnisse?
  • Ich denke, dass könnte es sein - ich Schloss die VS ab und eröffnete zwei Instanzen der gleichen Art und Weise Sie gekommen sind.
  • als Antwort dann 🙂
InformationsquelleAutor Dave Hillier | 2012-08-06
Schreibe einen Kommentar