Здравствуйте, 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.