У меня есть задача регистрировать все действия пользователя в сторонних элементах управления ActiveX внутри IE. Действия включают ввод символов в текстовые поля, нажатие кнопок и т. д. Итак, я создал BHO и нашел IHTMLElement с заданным classid. Каковы следующие шаги для решения этой задачи? Я использую С#.
Мониторинг действий пользователя в элементах управления ActiveX внутри IE
Ответы (2)
Элементы управления ActiveX размещаются в элементах Object. Вы можете использовать API IE DOM, чтобы добраться до элемента Object, но за пределами этого слоя он становится для вас непрозрачным. Если сам элемент управления ActiveX не предоставляет какую-либо автоматизацию, он представляет собой черный ящик собственного кода.
Существуют способы перехвата щелчков и нажатий клавиш в собственных элементах управления, в основном с использованием подклассов или перехватчиков. Вы можете использовать spy++ для проверки иерархии окон и поиска этих окон с помощью любого управляемого эквивалента FindWindow.
Как сказал jeffamaphone, Spy++ способен захватывать содержимое текстовых полей. Для этого Spy++ фактически внедряет свою собственную DLL (spyxxhk.dll) в IE, чтобы иметь возможность извлекать содержимое элементов управления (по этой причине при запуске запрашивает разрешение администратора). После внедрения в процесс IE он способен перехватить любую DLL (также известную как элементы управления ActiveX), присутствующую в процессе IE.
Для выполнения однотипных действий (захват, ведение журнала и т. д.) вам «просто» нужно разработать собственный механизм впрыска и зарегистрировать его, чтобы он автоматически запускался при запуске IE. В Интернете есть много информации, связанной с этими механизмами инъекций. Вот URL для начала.