Вопрос

Я знаю, что это может быть маловероятно, поэтому простите меня, поскольку я не так уж много знаю о COM.

По сути, я пытаюсь получить указатель на интерфейс IUnknown для работающего приложения. Проблема в том, что единственное, что я знаю о приложении, - это дескриптор его главного окна.

Возможно ли это?

Это было полезно?

Решение

«Стандартный» способ сделать это — использовать ДоступныйОбъектИз Окна Win32 API.Тем не менее, не многие вещи на самом деле поддерживают это, поэтому ваш опыт может отличаться.Вы должны PInvoke для AccessibleObjectFromWindow, передать HWND, а затем использовать Marshal.GetObjectForIUnknown для IntPtr, который вы получите обратно.

Другие советы

Иногда да, если окно находится в вашем процессе (в противном случае указатель на другой процесс для вас не имеет смысла), и автор окна явно сообщает вам, что он ожидает сообщения и возвращает интерфейс.В основном нет, люди обычно не пишут хаки, когда в этом нет необходимости, и отправка сообщений, неизвестных автору, будет иметь непредсказуемое поведение.

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