Форум: "Начинающим";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
ВнизTActionMainMenuBar Найти похожие ветки
← →
Khim © (2006-04-03 14:23) [0]Доброе время суток!
Подскажите плиз, как мне отловить хендл пункта меню, если меню относится к TActionMainMenuBar
Просто нужно понажимать пару кнопочек на меню
Если можно незамудренный примерчик, и помедленее, а то я записываю
Заранее спасиба!
← →
Khim © (2006-04-03 15:00) [1]Модераторы, перенесите пожалуйста вопрос на конференцию по API, а то в правилах запрещено дублировать вопросы.
← →
Leonid Troyanovsky © (2006-04-03 18:42) [2]
> Khim © (03.04.06 14:23)
> Подскажите плиз, как мне отловить хендл пункта меню, если
> меню относится к TActionMainMenuBar
И как оно к нему относится?
> Просто нужно понажимать пару кнопочек на меню
А что за кнопки в меню, чекбоксы?
И, пожалуйста, помедленнее, бо непонятно.
--
Regards, LVT.
← →
Khim © (2006-04-04 03:54) [3]Вот кусок кода:
Var
Men :HMenu;
Hnd,HndDialog,HndControl,HndAsc,HndBtn :HWnd;
HndMen,HndSMen :HMenu;
StrClass :PChar;
StrBase :string;
IdBtn,idMen :integer;
begin
Hnd:=FindWindow("TAppBuilder", nil);
if Hnd <>0 then begin
//фокусируем:
windows.SetForegroundWindow(Hnd); //или можно так:windows.BringWindowToTop(Hnd);
//Работа с меню:
//===============================================================================
HndMen:=GetMenu(Hnd);//получили описатель главного меню окна.
HndSMen:=GetSubMenu(HndMen,1);//получили описатель второго пункта главного меню (0 -первый пункт)
//получили идентификатор 7 пункта подменюменю (черты в меню - это также пункты)
idMen:=GetMenuItemID(HndSMen,6);
//в данном случае idMen это word(33206)
if idMen<>0 then begin
//запускаем пункт меню. Именно PostMessage, SendMessage - не работает.
PostMessage(Hnd,WM_COMMAND,idMen,0);
Этот код работает с блокнотомHnd:=FindWindow("Notepad", nil);
.......
и т.д.
Но вот с дельфи не работает. IdMen возвращает -1. Пробовал кинуть на форму ActionMainMenuBar. Результат тот же
← →
Юрий Зотов © (2006-04-04 06:11) [4]> Khim © (04.04.06 03:54) [3]
Из MSDN:
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 for a floating menu bar, use the Active Accessibility APIs.
Похоже, причина в этом (проверьте, работает ли код с Word"ом, там меню тоже на плавающем тулбаре). Вообще, вместо подобных полухакерских приемов я бы попытался использовать интерфейсы OTAPI, это легальный способ работы с IDE. К тому же нет гарантии, что 6-й подпункт 1-го пункта меню будет одним и тем же во всех версиях Delphi , а вот через OTAPI все будет работать железно.
← →
Khim © (2006-04-04 11:55) [5]Извините, не работал с OTAPI,
не обязательно 6-й подпункт, и не обязательно первый подпункт
Я ведь тока учусь,
Хочу все знать!
Если можно, по данному вопросу. Не могу получить хендл пункта меню.
Заранее пасиба!
← →
Khim © (2006-04-05 18:41) [6]Подскажите тогда другой способ понажимать на кнопочки, плиз, если можно
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c