Menu Item click используя Microsoft Active Accessibility
От: Ostapel  
Дата: 02.12.08 17:29
Оценка:
Привет Всем

Столкнулся c проблемой: надо программно вызвать команду меню, но меню не простое (float, custom menu, меню IE).
Например у меня есть handle окна (Inetrnet Explorer, ...) мне надо по тексту найти и вызвать команду, отвечающую за название, например ("File->Exit").
Парсить не проблема проблема вызвать команду.
C помощью WinAPI — не получается, так как:
HMENU hMenu = GetMenu(m_hFocusWnd);
возвращает NULL, и в MSDN сказано для тех целей нужно использовать Microsoft Active Accessibility.
Пробовал МАА, но безуспешно, смог найти программно заголовки меню, т.е. File, Help, ... вызвать accDoDefaultAction,
но доступа к елементам меню не смог получить.

Жду сообщений
Re: Menu Item click используя Microsoft Active Accessibility
От: Carc Россия http://www.amlpages.com/home.php
Дата: 02.12.08 17:44
Оценка:
Здравствуйте, Ostapel, Вы писали:

O>Привет Всем


O>Столкнулся c проблемой: надо программно вызвать команду меню, но меню не простое (float, custom menu, меню IE).

O>Например у меня есть handle окна (Inetrnet Explorer, ...) мне надо по тексту найти и вызвать команду, отвечающую за название, например ("File->Exit").
O>Парсить не проблема проблема вызвать команду.
O>C помощью WinAPI — не получается, так как:
O>HMENU hMenu = GetMenu(m_hFocusWnd);
O>возвращает NULL, и в MSDN сказано для тех целей нужно использовать Microsoft Active Accessibility.
O>Пробовал МАА, но безуспешно, смог найти программно заголовки меню, т.е. File, Help, ... вызвать accDoDefaultAction,
O>но доступа к елементам меню не смог получить.

O>Жду сообщений

А почему нельзя просто послать WM_COMMAND с нужным ID команды меню?
Aml Pages Home
Re[2]: Menu Item click используя Microsoft Active Accessibil
От: Ostapel  
Дата: 02.12.08 20:06
Оценка:
Здравствуйте, Carc, Вы писали:

C>Здравствуйте, Ostapel, Вы писали:


O>>Привет Всем


O>>Столкнулся c проблемой: надо программно вызвать команду меню, но меню не простое (float, custom menu, меню IE).

O>>Например у меня есть handle окна (Inetrnet Explorer, ...) мне надо по тексту найти и вызвать команду, отвечающую за название, например ("File->Exit").
O>>Парсить не проблема проблема вызвать команду.
O>>C помощью WinAPI — не получается, так как:
O>>HMENU hMenu = GetMenu(m_hFocusWnd);
O>>возвращает NULL, и в MSDN сказано для тех целей нужно использовать Microsoft Active Accessibility.
O>>Пробовал МАА, но безуспешно, смог найти программно заголовки меню, т.е. File, Help, ... вызвать accDoDefaultAction,
O>>но доступа к елементам меню не смог получить.

O>>Жду сообщений

C>А почему нельзя просто послать WM_COMMAND с нужным ID команды меню?

Ето нужно сделать с другой программы, у меня только есть handle окна, название меню, елемента меню, для того чтобы отправить WM_COMMAND, нужно знать ІD, хорошо ІD я получу с помощю АПИ — GetMenu, и других стандартных API, но проблема в том что таким методом можна получить ID только для простых менюшок, типа Notepad, Yahoo Messanger и для них всё работает отлично, но для таких програм как например Internet Explorer ІD елемента меню никак не получиш, ето не работает.
МSDN пишет следующие:

GetMenu does not work on floating menu bars. Floating menu bars are custom controls that mimic standard menus; they are not menus. To get the handle on a floating menu bar, use the Active Accessibility APIs.
active accessibility api
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.