Главная страница
    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.014 c
6-1136971997
Dimich1978
2006-01-11 12:33
2006.04.23
Прописать свою прогу в Разрешенные (Брандмауер)


15-1143933498
Лайт
2006-04-02 03:18
2006.04.23
Как оптимально вписать массив треугольников в прямоугольник?


15-1143661950
DillerXX
2006-03-29 23:52
2006.04.23
Избитая тема - какой телефон выбрать


2-1144755963
elfebet
2006-04-11 15:46
2006.04.23
Как добавить в exe иконку


4-1138979686
scall
2006-02-03 18:14
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский