![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Snake_B |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
Form1.PopupMenu1.Popup(Mouse.CursorPos.x, Mouse.CursorPos.y); показываю popup menu.... приложение скрыто (ShowWindow(Application.Handle, SW_HIDE);) как закрыть меню при нажатии мыши... пробовал: 1. (Как перехватывать события, посланные другим приложениям? - DRKB) function HookProc(Code: integer; WParam: word; LParam: Longint): Longint; stdcall; вроде заработало, не давно опять проверил, не хочет работать... сначала не реагировало на мышу совсем, в том числе при выборе пункта меню ноль эмоций, потом меню сразу же стало закрываться... код не менял... может это быть от того что кто то ещё хук ставит? нужно ли эту функцию делать в длл? и может это можно сделать как-нибудь проще? |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата вроде заработало, не давно опять проверил, не хочет работать... "Ничего не менялось, раньше работало - теперь нет"? Так не бывает. Значит, что-то изменилось...Цитата нужно ли эту функцию делать в длл? Да, обязательно. Тебе надо установить глобальный хук на WH_MOUSE и при отлове клика мышью послать оттуда своему приложению какое-нибудь сообщение. А приложение уже должно разбираться, что раз был клик на PopupMenu, значит надо выполнить тот пункт, который выбрали. А если пришло то самое сообщение о клике "где-то", значит надо "погасить" popup.Цитата может это быть от того что кто то ещё хук ставит? Если этот кто-то ставит хук правильно (и ты ставишь свой хук правильно), то все должно работать.P.S. Вот то, что ты привел - правильным не кажется. В частности, откуда хук знает, что такое Form1? Ты что, передавал его в DLL-ку? Или это была попытка установить локальный хук? |
![]() ![]() |
![]() |
Текстовая версия | 1.08.2025 14:49 |