Получить IUnkown, используя дескриптор окна
Вопрос
Я знаю, что это может быть маловероятно, поэтому простите меня, поскольку я не так уж много знаю о COM.
По сути, я пытаюсь получить указатель на интерфейс IUnknown для работающего приложения. Проблема в том, что единственное, что я знаю о приложении, - это дескриптор его главного окна.
Возможно ли это?
Решение
«Стандартный» способ сделать это — использовать ДоступныйОбъектИз Окна Win32 API.Тем не менее, не многие вещи на самом деле поддерживают это, поэтому ваш опыт может отличаться.Вы должны PInvoke для AccessibleObjectFromWindow, передать HWND, а затем использовать Marshal.GetObjectForIUnknown для IntPtr, который вы получите обратно.
Другие советы
Иногда да, если окно находится в вашем процессе (в противном случае указатель на другой процесс для вас не имеет смысла), и автор окна явно сообщает вам, что он ожидает сообщения и возвращает интерфейс.В основном нет, люди обычно не пишут хаки, когда в этом нет необходимости, и отправка сообщений, неизвестных автору, будет иметь непредсказуемое поведение.