Frage

Ich mache ein paar Automatisierung über eine Kombination von Windows-Meldung, die direkt an HWNDs und Anrufe an einen von der automatisierten Anwendung freiliegenden COM-Server sendet.

Wenn mehr als ein Instanz läuft, muss ich in der Lage sein, die Prozess-ID des COM-Servers zu ermitteln, sodass ich dieselbe Instanz mit dem COM-Anruf als denjenigen, der ich sende, Windows-Nachrichten an.

Ich kann alle laufenden COM-Server mit der laufenden Objekttabelle auflisten und moniker für alle zurückgeben, aber die COM-Objekte selbst setzen keine Methoden aus, mit der ich einen Fensterhandel, eine Faden-ID, eine Prozess-ID oder irgendetwas erhalten kannvon dieser Art.

Gibt es einen Weg, um herauszufinden, basierend auf einem Moniker oder dem eigentlichen Bindungskom-Objekt des Monikers, was die Prozess-ID des COM-Servers ist?

danke!

War es hilfreich?

Lösung

If you control (write code for) both the server and the client you can add a method to your COM interface that would return the process / thread ID or anything of this nature (e.g. server hostname if it is remote) on the server end. I second @Hans - unless you have access to the server implementation you may be out of luck by design.

Andere Tipps

I believe the kimgr CoGetServerPID function will give you the process-id of your COM server.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top