下面介绍下,利用WIN32编写自己的Warkey,实现改键,编译出的代码更小巧,希望对感兴趣的朋友有些帮助。主要利用低级键盘和鼠标钩子,无需额外的dll,程序很小巧,主要代码如下。
#ifndef WINVER
#define WINVER 0x0500
#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0500
#endif
#include <windows.h>
#include <winuser.h>
#include <shellapi.h>
#include <commctrl.h>
#defineWS_MyWinWS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU & (~WS_THICKFRAME)//窗口样式
#define WM_MyTray (WM_USER + 0x64) //定义用户托盘消息
#define ID_MyTray 0x64//定义用户托盘ID
#define ID_TIMER 0x01
#define SEC_MyTime 0x78
#define VK_OEM_3 0xC0//~键对应键码
HINSTANCE hInst=NULL;
HHOOK KeyHook = NULL;
HHOOK MouseHook=NULL;
HWND War3_Hwnd = NULL;//War3窗口句柄
NOTIFYICONDATA NotifyIconData;
HWND HwndHot[6]={NULL,NULL,NULL,NULL,NULL,NULL};//热键句柄
WORD Item[6]={0,0,0,0,0,0};//存储改建热键键码
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
VOID WINAPI InitializeHotkey(HWND hwndDlg,HWND HwndHot[]);
LRESULT CALLBACK LowLevelMouseProc(INT, WPARAM , LPARAM );
LRESULT CALLBACK LowLevelKeyboardProc(INT, WPARAM, LPARAM);
VOIDWINAPI SetHook(void);
VOID WINAPI UnHook(void);
VOID