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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
бх, урегщ, оехцфп setwindowshookex ойлфп ое аъбм? 13.10.01 21:28  Число просмотров: 1011
Автор: goblin Статус: Незарегистрированный пользователь
<"чистая" ссылка>
<programming>
[Win32] [VC++] Хуки и глюки... 13.10.01 13:04  
Автор: goblin Статус: Незарегистрированный пользователь
<"чистая" ссылка>
перехватываю сообщения WM_PAINT всех приложений.
зарегистрировал для этого хук WH_GETMESSAGE.
Но! Сообщения перехватываются но как бы не все.
Вот обычный PBrush например. В Spy++ видно, что WM_PAINTы сыпятся просто, когда рисуешь (не отпуская мышь). А моя прога ловит только когда мышь нажмешь-отпустишь. Почему Spy ловит, а моя прога нет? Вот в чем вопрос.
Всем спасибо. Разобрался. 14.10.01 18:22  
Автор: goblin Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Прав оказался <Mikhail>. Все отловилось WH_CALLWNDPROC хуком.

Только вначале я на него забил. Опшибочку допустил.
В CALLBACK функции
CallWndProc( int code, WPARAM wParam, LPARAM lParam )
lParam не к (CWPSTRUCT *) приводил а к (MSG *), как с WH_GETMESSAGE хуком.
Структуры-то похожие, вот я и облажался.
Ясно, что с WH_CALLWNDPROC у меня ничего не вышло.
Поэтому я и мучал WH_GETMESSAGE.

Но счас все ОК. Пашет.
Всем спасибо.
бх, урегщ, оехцфп setwindowshookex ойлфп ое аъбм? 13.10.01 21:28  
Автор: goblin Статус: Незарегистрированный пользователь
<"чистая" ссылка>
то есть: Ау, Cпецы, неужто никто SetWindowsHookEx не юзал? 13.10.01 21:31  
Автор: goblin Статус: Незарегистрированный пользователь
<"чистая" ссылка>
da vse usali 13.10.01 22:22  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
vo-pervyx segodnya Subbota :-)))
vo-vtoryx napishi malen'kij primerchik rabotayushego code-a.
A to tak srazu i ne pojmesh'
ya s takoj problemoj vo vsyakom sluchae ne stalkivalsya.
Да текст-то проще некуда :( 13.10.01 23:32  
Автор: goblin Статус: Незарегистрированный пользователь
<"чистая" ссылка>
//hook.dll #pragma data_seg(".MyData") HHOOK hGetMessageHook = NULL; UINT UpdateMessage = NULL; HWND hParentWnd = NULL; #pragma data_seg( ) HINSTANCE hInstance = NULL; // This instance of the DLL LRESULT CALLBACK GetMsgProc( int code, WPARAM wParam, LPARAM lParam ); //------------------------ BOOL APIENTRY DllMain( HANDLE hModule,DWORD r,LPVOID l ) { if (r==DLL_PROCESS_ATTACH)hInstance = (HINSTANCE)hModule; return TRUE; } //------------------------ __declspec(dllexport) int SetHook( HWND hWnd,UINT UpdateMsg) { hParentWnd = hWnd; UpdateMessage=UpdateMsg; hGetMessageHook= ::SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,hInstance,0); return 0; } //----------------------- LRESULT CALLBACK GetMsgProc( int code, WPARAM wParam, LPARAM lParam ) { MSG *msg = (MSG *) lParam; if ((code >= 0)&&(msg->message==WM_PAINT)) PostMessage(hParentWnd,UpdateMessage,0,0); return CallNextHookEx (hGetMessageHook,code ,wParam , lParam); };
это вот вкратце. Если нужно подробнее, могу на мыло прислать.

А дальше вот что. Запускаю Paint Brush. Запускаю Spy++, настраиваю его ловить только сообщения WM_PAINT для дочернего окна PBrush'а - белого такого, там где рисовать можно:). Вызываю SetHook из своей длл. Ну и вот. В Spy сообщения просто валом прут, когда в PBrush рисуешь, а ко мне приходят только когда мышь нажмешь\отпустишь. т.е. если скажем линию ведешь, то только в начале и в конце, а в процессе, так сказать, - нет.
[Win32] Да текст-то проще некуда :( 14.10.01 03:08  
Автор: Vital Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > //hook.dll > #pragma data_seg(".MyData") > HHOOK hGetMessageHook = NULL; > UINT UpdateMessage = NULL; > HWND hParentWnd = NULL; > #pragma data_seg( ) > > HINSTANCE hInstance = NULL; // This instance of > the DLL > > LRESULT CALLBACK GetMsgProc( int code, WPARAM wParam, > LPARAM lParam ); > //------------------------ > BOOL APIENTRY DllMain( HANDLE hModule,DWORD r,LPVOID l ) > { > if (r==DLL_PROCESS_ATTACH)hInstance = (HINSTANCE)hModule; > return TRUE; > } > //------------------------ > __declspec(dllexport) int SetHook( HWND hWnd,UINT > UpdateMsg) > { > hParentWnd = hWnd; > UpdateMessage=UpdateMsg; > hGetMessageHook= > ::SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,hInstance,0); > return 0; > } > //----------------------- > LRESULT CALLBACK GetMsgProc( int code, WPARAM wParam, > LPARAM lParam ) > { if (nCode < 0) return (hGetMessageHook,code ,wParam ,lParam); > MSG *msg = (MSG *) lParam; > if ((code >= 0)&&(msg->message==WM_PAINT)) > PostMessage(hParentWnd,UpdateMessage,0,0); > CallNextHookEx (hGetMessageHook,code ,wParam ,lParam); return 0; > }; > >
> это вот вкратце. Если нужно подробнее, могу на мыло
> прислать.
>
> А дальше вот что. Запускаю Paint Brush. Запускаю Spy++,
> настраиваю его ловить только сообщения WM_PAINT для
> дочернего окна PBrush'а - белого такого, там где рисовать
> можно:). Вызываю SetHook из своей длл. Ну и вот. В Spy
> сообщения просто валом прут, когда в PBrush рисуешь, а ко
> мне приходят только когда мышь нажмешь\отпустишь. т.е. если
> скажем линию ведешь, то только в начале и в конце, а в
> процессе, так сказать, - нет.

Кажется нужно сделать так, т.к функция GetMsgProc должна возвращать 0
Да текст-то проще некуда :( 14.10.01 00:50  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > //hook.dll > #pragma data_seg(".MyData") > HHOOK hGetMessageHook = NULL; > UINT UpdateMessage = NULL; > HWND hParentWnd = NULL; > #pragma data_seg( ) > > HINSTANCE hInstance = NULL; // This instance of > the DLL > > LRESULT CALLBACK GetMsgProc( int code, WPARAM wParam, > LPARAM lParam ); > //------------------------ > BOOL APIENTRY DllMain( HANDLE hModule,DWORD r,LPVOID l ) > { > if (r==DLL_PROCESS_ATTACH)hInstance = (HINSTANCE)hModule; > return TRUE; > } > //------------------------ > __declspec(dllexport) int SetHook( HWND hWnd,UINT > UpdateMsg) > { > hParentWnd = hWnd; > UpdateMessage=UpdateMsg; > hGetMessageHook= > ::SetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,hInstance,0); > return 0; > } > //----------------------- > LRESULT CALLBACK GetMsgProc( int code, WPARAM wParam, > LPARAM lParam ) > { > MSG *msg = (MSG *) lParam; > if ((code >= 0)&&(msg->message==WM_PAINT)) ^^^^^^ a pochemu (code >= 0) ??? poprobuj bez nego, dumaju message-i valom lezt' budut :-))) > PostMessage(hParentWnd,UpdateMessage,0,0); > return CallNextHookEx (hGetMessageHook,code ,wParam , > lParam); > }; > >
> это вот вкратце. Если нужно подробнее, могу на мыло
> прислать.
>
> А дальше вот что. Запускаю Paint Brush. Запускаю Spy++,
> настраиваю его ловить только сообщения WM_PAINT для
> дочернего окна PBrush'а - белого такого, там где рисовать
> можно:). Вызываю SetHook из своей длл. Ну и вот. В Spy
> сообщения просто валом прут, когда в PBrush рисуешь, а ко
> мне приходят только когда мышь нажмешь\отпустишь. т.е. если
> скажем линию ведешь, то только в начале и в конце, а в
> процессе, так сказать, - нет.
Да текст-то проще некуда :( 14.10.01 03:28  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
Po moemu type hooka dolzhen byt`: WH_CALLWNDPROC
пробовал, не помогает :( 14.10.01 02:09  
Автор: goblin Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1




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


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