M>Как можно имея интерфейс IHTMLSelectElement получить HWND листбокса/комбобокса?
ЕМНИП в последних версиях IE это уже не настоящее окошко — всё рисуется ручками. Ну а как получить — я бы плясал от координат окошка, и перебирал бы child-ы хоста рекурсивно. Ну и в первую очередь я бы постарался вообще избежать необходимости работать с HWND напрямую.
Здравствуйте, Left2, Вы писали:
M>>Как можно имея интерфейс IHTMLSelectElement получить HWND листбокса/комбобокса? L>ЕМНИП в последних версиях IE это уже не настоящее окошко — всё рисуется ручками. Ну а как получить — я бы плясал от координат окошка, и перебирал бы child-ы хоста рекурсивно. Ну и в первую очередь я бы постарался вообще избежать необходимости работать с HWND напрямую.
Про IE7 пока не говорим, интересует всё что до него.
Жду еще варианты. Есть ли способ с использованием MSAA?
Здравствуйте, marik2005, Вы писали:
M>Привет всем!
M>Как можно имея интерфейс IHTMLSelectElement получить HWND листбокса/комбобокса?
ИМХО, имея интерфейс IHTMLSelectElement, получить HWND листбокса/комбобокса нельзя, т.к. этого окна нет.
Открой Spy++ и посмотри на запущенный ИЕ с кнопками, радио и т.п., таких окон нет.
Здравствуйте, sham6215, Вы писали:
S>Здравствуйте, marik2005, Вы писали:
M>>Привет всем!
M>>Как можно имея интерфейс IHTMLSelectElement получить HWND листбокса/комбобокса?
S>ИМХО, имея интерфейс IHTMLSelectElement, получить HWND листбокса/комбобокса нельзя, т.к. этого окна нет. S>Открой Spy++ и посмотри на запущенный ИЕ с кнопками, радио и т.п., таких окон нет.
открыл и посмотрел — есть (IE6). иначе бы не спрашивал
Здравствуйте, marik2005, Вы писали:
M>Привет всем!
M>Как можно имея интерфейс IHTMLSelectElement получить HWND листбокса/комбобокса?
Уже сам нашел. Из IHTMLSelectElement запрашиваем IServiceProvider, у которого вызываем queryService(IID_IAccessible). В итоге получаем IAccessible и вызываем функцию WindowFromAccessibleObject.