相关知识:window钩子注册
1、项目结构:
2、MouseKeyboardHook.h MouseKeyboardHook.cpp
#ifndef MOUSEKEYBOARDHOOK_H
#define MOUSEKEYBOARDHOOK_H
#ifdef HOOK_EXPORTS
#define MOUSEKEYBOARDHOOK_API __declspec(dllexport)
#else
#define MOUSEKEYBOARDHOOK_API __declspec(dllimport)
#endif
#include <Windows.h>
extern "C" MOUSEKEYBOARDHOOK_API int SetHook(HWND main);
extern "C" MOUSEKEYBOARDHOOK_API int UnSetHook(void);
extern "C" MOUSEKEYBOARDHOOK_API void pro(void(*f1) (WPARAM wParam, LPARAM lParam));
#endif //MOUSEKEYBOARDHOOK
#include "MouseKeyboardHook.h"
HMODULE hDll = ::GetModuleHandle(LPCTSTR("HOOK.dll"));
typedef void(*f1) (WPARAM wParam, LPARAM lParam);
void(*pFunc) (WPARAM wParam, LPARAM lParam);
//共享内存变量
#pragma data_seg("MouseKeyboardHook")
HHOOK g_hMouseHook = NULL;
HHOOK g_hKeyboardHook = NULL;
HWND g_lhDisplayWnd = NULL;
#pragma data_seg()
int UnSetHook(void);
int SetHook(HWND main);
//钩子函数的格式 LRESULT CALLBACK 函数名(int 钩子类型, WPARAM wParam, LPARAM lParam);
//处理鼠标的钩子函数
LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam);
//处理键盘的钩子函数
LRESULT CALLBACK KeyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam);
//这个是获取DLL的内存地址,可以重复使用,当做模版
HMODULE WINAPI ModuleFromAddress(PVOID pv);
HWND m_hCursorWnd;
void CreateCursonIcon();
long __stdcall WindowProcedure(HWND hwnd, unsigned int msg, WPARAM wp, LPARAM lp);
LRESULT CALLBACK MouseHookPro