Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef _HOOK_DLL_
- #define _HOOK_DLL_ extern "C" __declspec(dllimport)
- #endif
- #include "windows.h"
- #define my_msg WM_USER + 1 // пользовательское сообщение; определяет my_msg
- _HOOK_DLL_ HHOOK InstallHook(HWND); // экспортируем ф-ии
- _HOOK_DLL_ void UninstallHook(); // экспортируем ф-ии
- #include "stdafx.h"
- #include "..\lab4DLL\lab4DLL.h"
- #include <windows.h>
- #include <tchar.h>
- LRESULT CALLBACK DlgF(HWND, UINT, WPARAM, LPARAM);
- int APIENTRY main(...){ // основная функция
- HINSTANCE hInst = GetModuleHandle(NULL);
- LPCTSTR dialog_name = L"DIAL";
- hInst = GetModuleHandle(NULL);
- DialogBoxParam(hInst, dialog_name, NULL, (DLGPROC)DlgF, NULL); // выхов диалога
- return 0; }
- LRESULT CALLBACK DlgF(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){ // диалоговая процедура
- TCHAR text_buffer1[] = _T("Spy Window was moved or resized!");
- switch (message){
- case WM_INITDIALOG: // установить хук
- if (!InstallHook(hDlg)){
- EndDialog(hDlg, LOWORD(wParam));
- return 1; }
- return TRUE;
- case WM_CLOSE: // удалить хук
- UninstallHook();
- EndDialog(hDlg, LOWORD(wParam));
- return TRUE;
- case my_msg: // пользователськое сообщение из .dll
- if ((HWND)wParam == hDlg) // дескриптор SPY
- //SendDlgItemMessage(hDlg, 1, LB_ADDSTRING, NULL, (LPARAM)text_buffer1);
- printf("wordpad");
- else {
- TCHAR szBuf[60];
- GetWindowText((HWND)wParam, szBuf, 30);
- wsprintf(szBuf, _T("%s Window was moved or seized!"), szBuf);
- SendDlgItemMessage(hDlg, 1, LB_ADDSTRING, NULL, (LPARAM)szBuf); }
- break; }
- return FALSE; }
- #include "stdafx.h"
- #include <tchar.h>
- #include "lab4DLL.h" // подключить заголовочный файл
- #pragma data_seg(".SHARDATA") // разделяемая секция
- HWND hWnd = NULL; // дескриптор окна
- HINSTANCE hInstance; // дескриптор модуля .dll
- HHOOK hHook; // дескриптор хука
- #pragma data_seg()
- #pragma comment(linker, "/section:.SHARDATA,rws")
- BOOL APIENTRY DLLMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpRes){ // оконная функция
- if (ul_reason_for_call == DLL_PROCESS_ATTACH){
- hInstance = hModule; } // присваиваем дескриптор .dll
- return TRUE;
- }
- int CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam){
- INT ret = CallNextHookEx(hHook, nCode, wParam, lParam); // вызов следующего хука
- if (nCode == HCBT_MOVESIZE){
- MessageBox(0, _T("Window was moved or size!!!"), _T("title"), MB_OK); // отладочный вывод
- PostMessage(hWnd, my_msg, wParam, 0); } // отправка пользовательского сообщения к SPY
- return 0;
- }
- HHOOK InstallHook(HWND hWnd){ // инсталяция хука
- LPCTSTR Classname = L"WordPad";
- hWnd = FindWindow(Classname, 0);
- if (::hWnd != NULL)
- return FALSE;
- hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC) HookProc, hInstance, 0);
- if (hHook != NULL)
- ::hWnd = hWnd;
- return hHook;
- }
- void UninstallHook(){
- if (hWnd == NULL)
- return;
- BOOL bResult = UnhookWindowsHookEx(hHook);
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement