Quipex

Untitled

Oct 11th, 2017
378
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.20 KB | None | 0 0
  1. #include<tchar.h>
  2. #define _HOOK_DLL_
  3. #include"lab4_C_lib.h"
  4.  
  5. #pragma data_seg(".SHARDATA")
  6.     HWND hWnd=NULL;
  7.     HINSTANCE hInstance;
  8.     HHOOK hHook;
  9. #pragma data_seg()
  10.  
  11. #pragma comment(linker, "/section:.SHARDATA,rws")
  12.  
  13. BOOL APIENTRY DllMain( HMODULE hModule,
  14.                       DWORD  ul_reason_for_call,  LPVOID lpReserved   )
  15. {   if(ul_reason_for_call == DLL_PROCESS_ATTACH)
  16.     {   hInstance = hModule;
  17.         DisableThreadLibraryCalls(hModule);
  18.     }
  19.     return TRUE;
  20. }
  21. int CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam)
  22. {   INT ret = CallNextHookEx(hHook,nCode,wParam,lParam);
  23.     if(nCode < 0)  return ret;
  24.     if(nCode == HCBT_MOVESIZE)
  25.     {   MessageBox(0,_T("Window was moved or sized!!!"),_T("title"),MB_OK);
  26.         PostMessage(hWnd,HOOK_CBT,wParam,0);
  27.     }
  28.     return 0;
  29. }
  30. HHOOK InstallHook(HWND hWnd)
  31. {   if(::hWnd != NULL) return FALSE;//уже установили хук
  32.     hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC) HookProc, hInstance, 0);
  33.     if(hHook != NULL) ::hWnd = hWnd; // ставим hook типа WH_CBT для системы     return hHook;
  34. }
  35. void UninstallHook()
  36. {   if(hWnd == NULL) return;//хук не установлен
  37.     BOOL bResult = UnhookWindowsHookEx(hHook);
  38.     if(bResult == TRUE) hWnd = NULL;
  39.     return;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment