информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медSpanning Tree Protocol: недокументированное применениеПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[c++] я спрашиваю не как установить ловушку физически, а какой фильтр в ловушке использовать, чтобы отловить все wm_paste в системе 31.05.01 20:53  Число просмотров: 1021
Автор: Vital Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Неужели никто c этим не сталкивался?
<programming>
[c++] как же все таки перехватить wm_paste в системе? 31.05.01 16:42  
Автор: Vital Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Как поставить ловушку(Hook) на все сообщения WM_PASTE?
Если я ставлю фильтр WH_GETMESSAGE и в функции ловушки пишу:

LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode < 0) return CallNextHookEx(hhkMes, nCode, wParam, lParam);
if (nCode == HC_ACTION)
{
LPMSG lpMsg;
lpMsg = (MSG*)lParam;
if (lpMsg->message == WM_PASTE)
{
MessageBeep(1);
}
}
CallNextHookEx(hhkMes, nCode, wParam, lParam);
return 0;
}

то ловятся только те сообщения, которые посланы через главное меню->
вставить и комбинацию клавишь Ctrl+v, а через контекстное меню->
вставить не ловятся.

Фильтры WH_MSGFILTER, WH_SYSMSGFILTER улавливают только обращения к меню, а WM_PASTE не возвращают.

Нужно чтобы работало под Win9x\NT\2000.

Спасибо Vital.
[c++] как же все таки перехватить wm_paste в системе? 01.06.01 14:27  
Автор: prop Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Проверь Spy++ куда идут сообщения, когда ты не можешь их поймать. По-идее, WH_GETMESSAGE должен ловить все сообщения из очереди окна. Если не поможе, то остается только сабклассировать процедуру окна - тогда мимо тебя не проскочит ни одно сообщение.
Попробуй вместо wh_getmessage использовать wh_callwndproc, может, поможет.. 01.06.01 11:40  
Автор: WiB Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Все верно, только надо еще установить твою ловушку. Используй SetWindowsHookEx 31.05.01 19:16  
Автор: WiB Статус: Незарегистрированный пользователь
<"чистая" ссылка>
[c++] я спрашиваю не как установить ловушку физически, а какой фильтр в ловушке использовать, чтобы отловить все wm_paste в системе 31.05.01 20:53  
Автор: Vital Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Неужели никто c этим не сталкивался?
[c++] я спрашиваю не как установить ловушку физически, а какой фильтр в ловушке использовать, чтобы отловить все wm_paste в системе 01.06.01 19:06  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
все верно делаешь, только для меню и прочей фигни, тебе не WM_PASTE ловить надо, а WM_COMMAND
я только вспомнил это. в свое время делал такую фигню.
короче все что идет от меню - это WM_COMMAND
так что тут у тебя должны стоять несколько ловушек. надеюсь это будет более понятно :))))

if (message == WM_PASTE)
определенно это то что мне надо.
else if (message == WM_COMMAND)
ВОЗМОЖНО это то что мне надо, надо выяснить.

Удачи
type of hook to install будет wh_sysmsgfilter. затем - sysmsgproc(...) где lparam будет указывать to an msg message structure. пробуй. 01.06.01 16:37  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach