Получить идентификатор процесса COM Server
-
15-11-2019 - |
Вопрос
Я делаю некоторую автоматику с помощью комбинации сообщения Windows, отправляя непосредственно на HWNDS и вызовы на COM-сервере, выставляющему автоматизированное приложение.
Если работает более одного экземпляра, мне нужно иметь возможность определить идентификатор процесса COM-сервера, чтобы я мог ударить один и тот же экземпляр с COM-вызовом, как тот, который я отправляю сообщения Windows.
.Я могу перечислить все запущенные серверы COM с запущенной таблицей объектов и вернуть пузыреми для всех них, но сами объекты COM не имеют никаких методов, которые я могу использовать для получения рукоделия окна, идентификатор потока, идентификатор процесса или что-либоиз такого рода.
Есть ли способ выяснить, на основе моникура или фактического связывания COM-объекта Moniker, какой идентификатор процесса COM-сервера есть?
Спасибо!
Решение
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.
Другие советы
I believe the kimgr CoGetServerPID function will give you the process-id of your COM server.