WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Опять я со своей кнопкой. :)

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Опять я со своей кнопкой. :)
Nicholas опубликован 08-05-2001 19:21 MSK   Click Here to See the Profile for Nicholas   Click Here to Email Nicholas  
Что надо сделать: Отловить нажатие кнопки в другом приложении.
В DLL я пишу функцию
extern "C" __declspec(dllexport) MouseHook(int, WPARAM, LPARAM);
MouseHook(int nCode, WPARAM wParam, LPARAM lParam)
{
if(wParam==BN_CLICKED)
{
MessageBeep(-1);
}
return 0;
}

В приложении я к ней обращаюсь:
hMouseHook=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)(pMouseHook), hLib,0);
Дело в том, что при работе приложения, когда я загружаю эту ловушку - пищит не только при нажатии на какую-нибудь кнопку (OK, Применить…), но и вообще – при любой работе с мышью. (нажатие, перемещение). Я пробовал HIWORD (wParam), тоже всегда входит (т.к. всгда занчение всегда равно 0 и код BN_CLICKED=0). LOWORD (wParam) – никогда не входит.

Кто в этом понимает – помогите, plz… Запарился я уже с этим hook’ом. :(((

Nicholas опубликован 09-05-2001 02:09 MSK     Click Here to See the Profile for Nicholas  Click Here to Email Nicholas     
Еще один вопрос: Как и откуда можно получить стандартные названия кнопок: Применить, OK,...
Мне надо отследить нажатие клавиши ПРИМЕНИТЬ
На Английском яз - Apply, на Испанском - черт знает как... А мне нужно, чтобы от языка работа приложения не зависела...
OlegN опубликован 14-05-2001 11:53 MSK     Click Here to See the Profile for OlegN  Click Here to Email OlegN     
Ты спутал сообщение, которое посылает кнопка
своему parent окну WM_COMMAND,
LOWORD(wParam) == BN_CLICKED
HIWORD(wParam) == ControlID,
с сообщениями от мышки,
а это разные вещи, ведь нажать кнопку можно
не только мышью, а и по Enter-у и по короткой
клавише (Alt-O например) и т.д.
Если приложение, в котором ты ловишь нажатие на клавишу написано на MFC,
то на 99,9 % кнопка OK будет иметь идентификватор (ControlID) равный IDOK не зависимо от языка.
У меня предложение такое :
поставить hook на parent окно (диалог) и
отслеживать WM_COMMAND сообщения где
LOWORD(wParam) == BN_CLICKED &&
HIWORD(wParam) == IDOK
Nicholas опубликован 15-05-2001 12:22 MSK     Click Here to See the Profile for Nicholas  Click Here to Email Nicholas     
Спасибо.
Для одного приложения сработало, но для другого - нет, отсюда возник вопрос: Как можно узнать ControlID принадлежащий кнопке
Есть ли для этого стандартные утилиты?
OlegN опубликован 15-05-2001 12:09 MSK     Click Here to See the Profile for OlegN  Click Here to Email OlegN     
Зная HWND кнопки можно получить его ControlID
используя функцию :
long ControlID = ::GetWindowLong(hWnd, GWL_ID);
Nicholas опубликован 16-05-2001 16:05 MSK     Click Here to See the Profile for Nicholas  Click Here to Email Nicholas     
Спасибо большое!
Получилось

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.