#include "windows.h"
HHOOK Hhook;
#pragma data_seg(".MySec")
HWND g_hwnd = NULL;
#pragma data_seg()
#pragma comment(linker,"/section:.MySec,rws")
// #pragma data_seg(".JOE")
// HWND g_hwnd = NULL;
// #pragma data_seg()
// #pragma comment(linker, "/section:.JOE,rws")
extern "C" void _declspec(dllexport) SetHook(HWND Hwnd);
#define WM_GetPoint WM_USER + 0x0400
int dllGlobalVar;
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
dllGlobalVar = 100; //在dll被加载时,赋全局变量为100
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
LRESULT CALLBACK MouseProc(int nCode,
WPARAM wParam,
LPARAM lParam
)
{
if (nCode < 0)
return CallNextHookEx(Hhook, nCode, wParam, lParam);
if (wParam == WM_MOUSEMOVE || wParam == WM_NCMOUSEMOVE)
{
MOUSEHOOKSTRUCT* MouseHook = (MOUSEHOOKSTRUCT*)lParam;
POINT pt = MouseHook->pt;
::PostMessage(g_hwnd, WM_GetPoint, WPARAM(pt.x), LPARAM(pt.y));
//SendMessage?
return 1;
}
return CallNextHookEx(Hhook, nCode, wParam, lParam);
}
LRESULT CALLBACK KeyboardProc( int code,
WPARAM wParam,
LPARAM lParam
)
{
return 1;
}
void SetHook(HWND Hwnd)
{
g_hwnd = Hwnd;
Hhook = SetWindowsHookEx(WH_MOUSE, MouseProc, GetModuleHandle("Hook") ,0 );
}
评论0
最新资源