Quipex icon

Untitled

Quipex | PRO | 10/11/17 09:22:58 PM UTC | 0 ⭐ | 355 👁️ | Never ⏰ | []
C |

1.2 KB

|

None

|

0 👍

/

0 👎

#include<tchar.h>
#define _HOOK_DLL_
#include"lab4_C_lib.h"
 
#pragma data_seg(".SHARDATA")
    HWND hWnd=NULL;
    HINSTANCE hInstance;
    HHOOK hHook;
#pragma data_seg()
 
#pragma comment(linker, "/section:.SHARDATA,rws")
 
BOOL APIENTRY DllMain( HMODULE hModule, 
                      DWORD  ul_reason_for_call,  LPVOID lpReserved   )
{   if(ul_reason_for_call == DLL_PROCESS_ATTACH)
    {   hInstance = hModule;
        DisableThreadLibraryCalls(hModule);
    }
    return TRUE;
}
int CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam)
{   INT ret = CallNextHookEx(hHook,nCode,wParam,lParam);
    if(nCode < 0)  return ret;
    if(nCode == HCBT_MOVESIZE)
    {   MessageBox(0,_T("Window was moved or sized!!!"),_T("title"),MB_OK);
        PostMessage(hWnd,HOOK_CBT,wParam,0); 
    }
    return 0;
}
HHOOK InstallHook(HWND hWnd)
{   if(::hWnd != NULL) return FALSE;//уже установили хук
    hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC) HookProc, hInstance, 0); 
    if(hHook != NULL) ::hWnd = hWnd; // ставим hook типа WH_CBT для системы     return hHook;
}
void UninstallHook()
{   if(hWnd == NULL) return;//хук не установлен
    BOOL bResult = UnhookWindowsHookEx(hHook);
    if(bResult == TRUE) hWnd = NULL;
    return;
}

Comments