Вопрос

Я делаю некоторую автоматику с помощью комбинации сообщения 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top