-
Многим из Вас известна небольшая утилитка Spy++, с её помощью можно узнать свойства всех объектов (окон) отображаемых на экране.
Есть также утилитка похожая на Spy++, называется она AccExplorer. С её помощью можно просматривать свойства тех же объектов но только рассматривая их как COM-обекты, а не окна (если это возможно конечно).
И вот у меня появилась потребность просмотреть свойства окна как COM-объекта. Подскажите как мне этого добится.
-
> свойства окна как COM-объекта
окно - не COM-объект
-
Ну этоя понимаю. Но с ним ведь как то связан COM-объект который как раз и показывает AccExplorer при наведении на то же окно. Его то свойства получить можно, так же как и эта прога. Вот как добраться до них через хендл окна?
-
> с ним ведь как то связан COM-объект который как раз и показывает
> AccExplorer
какой например? в какой программе, на каком окне?
-
:) вообще меня интересует поле для ввода пароля при входе в Windows в графическом режиме.
Хендл данного окна получить не сложно, но это не много не то.
Программа AccExplorer данное поле ввода видет как COM-объект со своими свойствами, разумеется пароль она не показывает :). Вот эти свойства то мне узнать и надо.
-
а, так ты про IAccessible
ну так это интерфейс, который реализует окно. Но само по себе оно ком-объектом не является. Это просто некая структура данных с обработчиком сообщений
-
Я просто (как уже наверное стало очевидно) с COM'ами не очень хотошо общаюсь.
Подскажите, пожалуйста, как имея в распоряжении только хендл окна получить интересующие меня свойства (описаные выше) ???
Что то мне подсказывает, что Вы, clickmaker, можете мне помочь.
-
> [6] niko_ © (25.07.07 13:01)
а почему интересует именно поле для ввода пароля?
-
Если оно появилось мне надо узнать к какому пользователю оно относится. В интересующих меня свойствах это дело проскакивает.
-
имя пользователя узнать? GetUserName() не подойдет?
-
:) издеваетесь, да.
А просто подсказать не судьба?
Вход в систему в графическом режиме (допустим отображены 3 пользователя для входа, второй под паролем).
При нажатии на 2 пользователя появляется поле для ввода пароля. Вот в этот момент и надо узнать к какому пользователю (его имя) относится данныое поле ввода.
-
где "при входе в Windows в графическом режиме" отображаются целых три пользователя?
-
Сколько зарегестрировано столько и появится (я написал: допустим отображены 3 пользователя)
-
погоди. в окошке для входа в винду есть поле для ввода юзера. По умолчанию там - последний залогинившийся. И всё. Где остальные?
-
Есть 2 впособы входа в систему:
1. Диологовый (то о чём говорите Вы)
2. Графический (то о чём говорю я)
Настройки -> Панель управления -> Учётные записи пользователей:
-> Изменить вход пользователей в систему
v Использовать страницу приветствия
-
а, это...
ну в любом случае можно выяснить класс окна, потом FindWindowEx, потом WM_GETTEXT
-
это всё я знаю - но так имени пользователя не узнать, оно там ни где не фигурирует.
А вот интерфейс IAccessible, реализующий данное окно (как Вы выше сказали) содержит такую информацию, программа AccExplorer это показала.
В очередной раз прошу, если можите, подскажите как мне добраться до этого (наверное этого) интерфейса у данного объекта и получить его свойства.
-
AccessibleObjectFromWindow()
-
Покопаю в этом направлении.
А какие ещё интерфейсы могут "сопровождать" IAccessible интерфейс.