Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Послать самому себе сообщение, мол, выбран пункт меню

294
01 марта 2007 года
Plisteron
982 / / 29.08.2003
Хочется, чтобы при обнаружении в момент запуска приложения в командной строке некоего пароля часть действий выполнялось автоматизировано. Для этого надо сымитировать действия пользователя, а именно выбор пунктов меню в главном окне приложения.
Логичнее всего, на мой взгляд, использовать для этого функцию PostMessage(). Но есть одна тонкость.
При выборе какого-либо пункта меню окну приходит сообщение WM_COMMAND с параметром wParam = WM_USER + <константа>. Константа, понятное дело, для каждого пункта меню своя и выбирается софтиной меню-дизайнера по каким-то только ей известным соображениям, причём в дизайнере меню её, как я понимаю, изменить нельзя.
Иными словами, моя задача сводится к тому, чтобы из своей программы узнать, какое значение wParam у нужного мне пункта меню и выполнить соотвествующий PostMessage.
Уважаемые знатоки, внимание, вопрос: каким образом узнать из своей программы, какое значение wParam соответствует данному пункту меню?
Заранее благодарен.
9.5K
01 марта 2007 года
Borgir
97 / / 20.12.2006
А к чему все так усложнять? Ведь при выборе какого-либо пункта меню выполняется соответствующая функция. Например если пункты меня создавать по-умолчанию и не менять их названия, то они создаются с именами N1, N2 и тд. Соответсвутющие функции получаются N1Click(), N2Click и тд.
Почему нельзя просто запустить эту функцию? Я всегда так делаю :)
309
02 марта 2007 года
el scorpio
1.1K / / 19.09.2006
Выполнить обработчик события данного компонента, например
 
Код:
TForm1::TForm1 () //конструктор формы
{
// Эмуляция щелчка мышью по кнопке
   if (this->Button1->OnClick) // Проверка наличия обработчика
      this->Button1->OnClick (this->Button1); // Вызов обработчика
}

Конечно, по кнопке "щёлкнуть" можно куда проще - методом Click() для TButton, но данный способ позволяет эмулировать всё
294
03 марта 2007 года
Plisteron
982 / / 29.08.2003
Цитата: Borgir
А к чему все так усложнять? Ведь при выборе какого-либо пункта меню выполняется соответствующая функция. Например если пункты меня создавать по-умолчанию и не менять их названия, то они создаются с именами N1, N2 и тд. Соответсвутющие функции получаются N1Click(), N2Click и тд.
Почему нельзя просто запустить эту функцию? Я всегда так делаю :)



Можно. Но по ряду причин хочется именно так, как описано в вопросе.
А то, что мне надо, выполняют функции GetMenuItemId() и GetMenuItemInfo(), если кому интересно.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог