Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2009, 16:29   #1
Crivel
Delphi\C++
Форумчанин
 
Аватар для Crivel
 
Регистрация: 18.06.2008
Сообщений: 277
По умолчанию Вызвать меню из чужой иконки с помощью отсылки сообщения

Задача такая: имеется хэндл иконки. Требуется вызвать меню (т.е. такое какое вызывается щелчком правой кнопки по иконке). Хэндл получаю с помощью TFWSysTrayInfo.
Код:
I := 4;
sendMessage(info.IconItem[I].hwnd,wm_rbuttonup,0,0);
info типа TFWSysTrayInfo.
Т.е. получаем хэндл 4-й по счёту иконки и шлём ему сообщение wm_rbuttonup. По идее должно вызываться меню, но нечего подобного.
Прошу помощи, чтобы разобраться в проблеме. Дело в том что просто кликнуть на иконку нельзя. Т.е. найти координаты и с помощью mouse_event(), нужно именно чтобы было с помощью сообщения.
Заранее благодарен
Crivel вне форума Ответить с цитированием
Старый 18.10.2009, 16:58   #2
Showy
Форумчанин Подтвердите свой е-майл
 
Аватар для Showy
 
Регистрация: 08.08.2007
Сообщений: 183
По умолчанию

Если есть возможность получить UCallBackMessage иконки, то попробуйте так сделать:
Код:
I := 4;
SendMessage(info.IconItem[i].hwnd, UCallBackMessage, 0, WM_RBUTTONUP);
Until The End Of Time
Showy вне форума Ответить с цитированием
Старый 19.10.2009, 16:34   #3
Crivel
Delphi\C++
Форумчанин
 
Аватар для Crivel
 
Регистрация: 18.06.2008
Сообщений: 277
По умолчанию

Извиняюсь, но дело в том что я раньше создавал иконки в трее с помощью CoolTrayIcon и поэтому у меня нет знаний(опыта) работы с треем. А теперь как приспичило работать с чужими иконками возникают такие проблемы. Я заменил ту строчку на которую вы указали. Выходит ошибка при компиляции: не находится переменная UCallBackMessage, даже если подключён модуль ShellApi. Пожалуйста объясните для чего этот UCallBackMessage.

p.s. этот код
Код:
SendMessage(info.IconItem[I].hWnd,WM_RBUTTONDOWN,1,1); SendMessage(info.IconItem[I].hWnd,WM_RBUTTONUP,1,1);
работает только для иконки Касперского.

Последний раз редактировалось Crivel; 19.10.2009 в 17:53.
Crivel вне форума Ответить с цитированием
Старый 19.10.2009, 22:02   #4
Crivel
Delphi\C++
Форумчанин
 
Аватар для Crivel
 
Регистрация: 18.06.2008
Сообщений: 277
По умолчанию

Ну не уже ли проблемма не решаема? я почитал про UCallBackMessage и понял в чём проблемма. Но как узнать тогда UCallBackMessage чужой иконки? Хэдл есть, но как я понял не все иконки реагируют на WM_RBUTTONUP т.е. может и на wm_user+100 и т.д.

Последний раз редактировалось Crivel; 19.10.2009 в 22:05.
Crivel вне форума Ответить с цитированием
Старый 20.10.2009, 22:24   #5
Showy
Форумчанин Подтвердите свой е-майл
 
Аватар для Showy
 
Регистрация: 08.08.2007
Сообщений: 183
По умолчанию

скинте ваш модуль TFWSysTrayInfo
Until The End Of Time
Showy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Контекстное меню для иконки в трее через WinApi 3D Hunter Win Api 3 24.09.2009 08:13
Програма для отсылки Mail писем DAgER_MEN Общие вопросы Delphi 1 24.07.2009 13:35
Меню,контент с помощью Js Next JavaScript, Ajax 0 22.07.2009 06:19
как вызвать по нажатию кнопки меню настройки клавиатуры, мыши, монитора 1234 Общие вопросы Delphi 2 10.09.2008 16:52
Динамическое меню с помощью CSS LeoN HTML и CSS 4 21.05.2008 12:46