hodll.cpp

来自「笔记本的M键坏了」· C++ 代码 · 共 87 行

CPP
87
字号
//键盘钩子
// GDGF 编写于2001年10月16日

#include "stdafx.h"
#include "hodll.h"
#include "mmsystem.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#pragma data_seg(".SHARDAT")
static HHOOK hkb=NULL;
#pragma data_seg()
HINSTANCE hins;

char szBuf[256];
char *p;
CString msg;
////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CHodllApp, CWinApp)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
LRESULT __declspec(dllexport)__stdcall  CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{	
	//处理一些特殊按键
	char KeyName[50];
	ZeroMemory(KeyName,50);
	GetKeyNameText(lParam,KeyName,50);
	CString KeyNameStr=KeyName;

	//if   (wParam   ==   'A')	
	//if   (wParam   ==   VK_RSHIFT||wParam   ==   VK_SHIFT)		
	//if   (wParam   ==   VK_RSHIFT)
	//if   (wParam   ==   VK_RMENU)
	if   (wParam   ==   VK_F2)
	//if(KeyNameStr=="[")
	{
		if(   nCode   >=   0   &&   (DWORD)lParam&0x40000000   )   
		{			
			{   
				keybd_event('M',0,0,0);   
				keybd_event('M',0,KEYEVENTF_KEYUP,0);   
			}
		}
		return   1;
	}
	LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );	
	return  RetVal;
}
BOOL __declspec(dllexport)__stdcall installhook()
{
	hkb=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hins,0);
	return TRUE;
}
BOOL __declspec(dllexport)  UnHook()
{   	
	BOOL unhooked = UnhookWindowsHookEx(hkb);
	return unhooked;
} 
BOOL CHodllApp::InitInstance ()
{	
	AFX_MANAGE_STATE(AfxGetStaticModuleState());
	hins=AfxGetInstanceHandle();

	GetModuleFileName(AfxGetInstanceHandle( ),szBuf,sizeof(szBuf));
    p = szBuf;
    while(strchr(p,'\\')) 
	{ 
	   p = strchr(p,'\\'); 
	   p++; 
	}
    *p = '\0'; 		
    msg=szBuf;
	return TRUE;	
}
BOOL CHodllApp::ExitInstance ()
{
	return TRUE;
}
CHodllApp::CHodllApp()
{
}
CHodllApp theApp;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?