Главная страница
    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.012 c
15-1144047436
Новичоккк
2006-04-03 10:57
2006.04.23
Только что узнал что Razorback закрыли (eMule)


2-1144392986
Bryak
2006-04-07 10:56
2006.04.23
progressBar!


2-1144513418
FA
2006-04-08 20:23
2006.04.23
Динамические массивы в параметрах


3-1138807330
Neo Trinitron
2006-02-01 18:22
2006.04.23
Поиск в поле CLOB (Oracle)


15-1143909658
Рамиль
2006-04-01 20:40
2006.04.23
А вы говорите первое апреля:-)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский