Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.015 c
15-1143711540
Думкин
2006-03-30 13:39
2006.04.23
Фильм


2-1144242185
Hitriy
2006-04-05 17:03
2006.04.23
помогите кто чем может с работой в буфере


15-1144046356
ORMADA
2006-04-03 10:39
2006.04.23
Delphi7+sp1


15-1143992025
Marser
2006-04-02 19:33
2006.04.23
Банный лист


3-1138652112
Wistler
2006-01-30 23:15
2006.04.23
Libmysqld.dll и External exception C00000008





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский