Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.23 KB | None | 0 0
  1. #ifndef _HOOK_DLL_
  2. #define _HOOK_DLL_ extern "C" __declspec(dllimport)
  3. #endif
  4. #include "windows.h"
  5. #define my_msg WM_USER + 1 // пользовательское сообщение; определяет my_msg
  6.  
  7. _HOOK_DLL_ HHOOK InstallHook(HWND); // экспортируем ф-ии
  8. _HOOK_DLL_ void UninstallHook(); // экспортируем ф-ии
  9.  
  10. #include "stdafx.h"
  11. #include "..\lab4DLL\lab4DLL.h"
  12. #include <windows.h>
  13. #include <tchar.h>
  14.  
  15. LRESULT CALLBACK DlgF(HWND, UINT, WPARAM, LPARAM);
  16. int APIENTRY main(...){ // основная функция
  17. HINSTANCE hInst = GetModuleHandle(NULL);
  18. LPCTSTR dialog_name = L"DIAL";
  19. hInst = GetModuleHandle(NULL);
  20. DialogBoxParam(hInst, dialog_name, NULL, (DLGPROC)DlgF, NULL); // выхов диалога
  21. return 0; }
  22. LRESULT CALLBACK DlgF(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){ // диалоговая процедура
  23. TCHAR text_buffer1[] = _T("Spy Window was moved or resized!");
  24. switch (message){
  25. case WM_INITDIALOG: // установить хук
  26. if (!InstallHook(hDlg)){
  27. EndDialog(hDlg, LOWORD(wParam));
  28. return 1; }
  29. return TRUE;
  30. case WM_CLOSE: // удалить хук
  31. UninstallHook();
  32. EndDialog(hDlg, LOWORD(wParam));
  33. return TRUE;
  34. case my_msg: // пользователськое сообщение из .dll
  35. if ((HWND)wParam == hDlg) // дескриптор SPY
  36. //SendDlgItemMessage(hDlg, 1, LB_ADDSTRING, NULL, (LPARAM)text_buffer1);
  37. printf("wordpad");
  38. else {
  39. TCHAR szBuf[60];
  40. GetWindowText((HWND)wParam, szBuf, 30);
  41. wsprintf(szBuf, _T("%s Window was moved or seized!"), szBuf);
  42. SendDlgItemMessage(hDlg, 1, LB_ADDSTRING, NULL, (LPARAM)szBuf); }
  43. break; }
  44. return FALSE; }
  45.  
  46. #include "stdafx.h"
  47.  
  48. #include <tchar.h>
  49. #include "lab4DLL.h" // подключить заголовочный файл
  50. #pragma data_seg(".SHARDATA") // разделяемая секция
  51. HWND hWnd = NULL; // дескриптор окна
  52. HINSTANCE hInstance; // дескриптор модуля .dll
  53. HHOOK hHook; // дескриптор хука
  54. #pragma data_seg()
  55. #pragma comment(linker, "/section:.SHARDATA,rws")
  56. BOOL APIENTRY DLLMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpRes){ // оконная функция
  57. if (ul_reason_for_call == DLL_PROCESS_ATTACH){
  58. hInstance = hModule; } // присваиваем дескриптор .dll
  59. return TRUE;
  60. }
  61. int CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam){
  62. INT ret = CallNextHookEx(hHook, nCode, wParam, lParam); // вызов следующего хука
  63. if (nCode == HCBT_MOVESIZE){
  64. MessageBox(0, _T("Window was moved or size!!!"), _T("title"), MB_OK); // отладочный вывод
  65. PostMessage(hWnd, my_msg, wParam, 0); } // отправка пользовательского сообщения к SPY
  66. return 0;
  67. }
  68. HHOOK InstallHook(HWND hWnd){ // инсталяция хука
  69. LPCTSTR Classname = L"WordPad";
  70. hWnd = FindWindow(Classname, 0);
  71. if (::hWnd != NULL)
  72. return FALSE;
  73. hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC) HookProc, hInstance, 0);
  74. if (hHook != NULL)
  75. ::hWnd = hWnd;
  76. return hHook;
  77. }
  78. void UninstallHook(){
  79. if (hWnd == NULL)
  80. return;
  81. BOOL bResult = UnhookWindowsHookEx(hHook);
  82. return;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement