Holen Sie sich die Prozess-ID von COM-Server
-
15-11-2019 - |
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!
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.