基本信息
源码名称:c++ 键盘钩子(按键发出相应的字母声音)
源码大小:0.53M
文件格式:.zip
开发语言:C/C++
更新时间:2018-08-24
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

//键盘钩子
// 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)
{	
	if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
	{
		switch(wParam)
		{
// ESC F1~F12
		case VK_ESCAPE:sndPlaySound(msg "sound\\f1.wav",SND_ASYNC);break;
		case VK_F1:sndPlaySound(msg "sound\\f1.wav",SND_ASYNC);break;
		case VK_F2:sndPlaySound(msg "sound\\f2.wav",SND_ASYNC);break;
		case VK_F3:sndPlaySound(msg "sound\\f3.wav",SND_ASYNC);break;
		case VK_F4:sndPlaySound(msg "sound\\f4.wav",SND_ASYNC);break;
		case VK_F5:sndPlaySound(msg "sound\\f5.wav",SND_ASYNC);break;
		case VK_F6:sndPlaySound(msg "sound\\f6.wav",SND_ASYNC);break;
		case VK_F7:sndPlaySound(msg "sound\\f7.wav",SND_ASYNC);break;
		case VK_F8:sndPlaySound(msg "sound\\f8.wav",SND_ASYNC);break;
		case VK_F9:sndPlaySound(msg "sound\\f9.wav",SND_ASYNC);break;
		case VK_F10:sndPlaySound(msg "sound\\f10.wav",SND_ASYNC);break;
		case VK_F11:sndPlaySound(msg "sound\\f11.wav",SND_ASYNC);break;
		case VK_F12:sndPlaySound(msg "sound\\f12.wav",SND_ASYNC);break;
// 0~9
		case '1':sndPlaySound(msg "sound\\1.wav",SND_ASYNC);break;
		case '2':sndPlaySound(msg "sound\\2.wav",SND_ASYNC);break;
		case '3':sndPlaySound(msg "sound\\3.wav",SND_ASYNC);break;
		case '4':sndPlaySound(msg "sound\\4.wav",SND_ASYNC);break;	
		case '5':sndPlaySound(msg "sound\\5.wav",SND_ASYNC);break;
		case '6':sndPlaySound(msg "sound\\6.wav",SND_ASYNC);break;
		case '7':sndPlaySound(msg "sound\\7.wav",SND_ASYNC);break;
		case '8':sndPlaySound(msg "sound\\8.wav",SND_ASYNC);break;
		case '9':sndPlaySound(msg "sound\\9.wav",SND_ASYNC);break;
		case '0':sndPlaySound(msg "sound\\0.wav",SND_ASYNC);break;

		case VK_NUMPAD1:sndPlaySound(msg "sound\\1.wav",SND_ASYNC);break;
		case VK_NUMPAD2:sndPlaySound(msg "sound\\2.wav",SND_ASYNC);break;
		case VK_NUMPAD3:sndPlaySound(msg "sound\\3.wav",SND_ASYNC);break;
		case VK_NUMPAD4:sndPlaySound(msg "sound\\4.wav",SND_ASYNC);break;
		case VK_NUMPAD5:sndPlaySound(msg "sound\\5.wav",SND_ASYNC);break;
		case VK_NUMPAD6:sndPlaySound(msg "sound\\6.wav",SND_ASYNC);break;
        case VK_NUMPAD7:sndPlaySound(msg "sound\\7.wav",SND_ASYNC);break;
		case VK_NUMPAD8:sndPlaySound(msg "sound\\8.wav",SND_ASYNC);break;
		case VK_NUMPAD9:sndPlaySound(msg "sound\\9.wav",SND_ASYNC);break;
		case VK_NUMPAD0:sndPlaySound(msg "sound\\0.wav",SND_ASYNC);break;
// A~Z
		case 'A':sndPlaySound(msg "sound\\a.wav",SND_ASYNC);break;
		case 'B':sndPlaySound(msg "sound\\b.wav",SND_ASYNC);break;
		case 'C':sndPlaySound(msg "sound\\c.wav",SND_ASYNC);break;
		case 'D':sndPlaySound(msg "sound\\d.wav",SND_ASYNC);break;
		case 'E':sndPlaySound(msg "sound\\e.wav",SND_ASYNC);break;
		case 'F':sndPlaySound(msg "sound\\f.wav",SND_ASYNC);break;
		case 'G':sndPlaySound(msg "sound\\g.wav",SND_ASYNC);break;
		case 'H':sndPlaySound(msg "sound\\h.wav",SND_ASYNC);break;
		case 'I':sndPlaySound(msg "sound\\i.wav",SND_ASYNC);break;
		case 'J':sndPlaySound(msg "sound\\j.wav",SND_ASYNC);break;
		case 'K':sndPlaySound(msg "sound\\k.wav",SND_ASYNC);break;
		case 'L':sndPlaySound(msg "sound\\l.wav",SND_ASYNC);break;
		case 'M':sndPlaySound(msg "sound\\m.wav",SND_ASYNC);break;
		case 'N':sndPlaySound(msg "sound\\n.wav",SND_ASYNC);break;
		case 'O':sndPlaySound(msg "sound\\o.wav",SND_ASYNC);break;
		case 'P':sndPlaySound(msg "sound\\p.wav",SND_ASYNC);break;
		case 'Q':sndPlaySound(msg "sound\\q.wav",SND_ASYNC);break;
		case 'R':sndPlaySound(msg "sound\\r.wav",SND_ASYNC);break;
		case 'S':sndPlaySound(msg "sound\\s.wav",SND_ASYNC);break;
		case 'T':sndPlaySound(msg "sound\\t.wav",SND_ASYNC);break;
		case 'U':sndPlaySound(msg "sound\\u.wav",SND_ASYNC);break;
		case 'V':sndPlaySound(msg "sound\\v.wav",SND_ASYNC);break;
		case 'W':sndPlaySound(msg "sound\\w.wav",SND_ASYNC);break;
		case 'X':sndPlaySound(msg "sound\\x.wav",SND_ASYNC);break;
		case 'Y':sndPlaySound(msg "sound\\y.wav",SND_ASYNC);break;
		case 'Z':sndPlaySound(msg "sound\\z.wav",SND_ASYNC);break;
// OTHER KEY
		case VK_UP:sndPlaySound(msg "sound\\up.wav",SND_ASYNC);break;
		case VK_DOWN:sndPlaySound(msg "sound\\down.wav",SND_ASYNC);break;
		case VK_LEFT:sndPlaySound(msg "sound\\left.wav",SND_ASYNC);break;
		case VK_RIGHT:sndPlaySound(msg "sound\\right.wav",SND_ASYNC);break;

		case VK_TAB:sndPlaySound(msg "sound\\tab.wav",SND_ASYNC);break;
		case VK_MENU:sndPlaySound(msg "sound\\alt.wav",SND_ASYNC);break;
		case VK_SHIFT:sndPlaySound(msg "sound\\shift.wav",SND_ASYNC);break;
		case VK_CONTROL:sndPlaySound(msg "sound\\contrl.wav",SND_ASYNC);break;

		case VK_RETURN:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_ACCEPT:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_CLEAR:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_DELETE:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_CANCEL:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;		
		case VK_CONVERT:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_DIVIDE:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_END:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_FINAL:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_HELP:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_HOME:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_INSERT:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_KANA:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_KANJI:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_MODECHANGE:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_MULTIPLY:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_NONCONVERT:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_PAUSE:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_SPACE:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_LWIN:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_CAPITAL:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_PRIOR:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;
		case VK_NEXT:sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);break;	
		}
//处理一些特殊按键
		char KeyName[50];
		ZeroMemory(KeyName,50);
		GetKeyNameText(lParam,KeyName,50);
		CString KeyNameStr=KeyName;
		if(KeyNameStr=="`")
            sndPlaySound(msg "sound\\`.wav",SND_ASYNC);
		if(KeyNameStr=="-")
            sndPlaySound(msg "sound\\-.wav",SND_ASYNC);
		if(KeyNameStr=="=")
            sndPlaySound(msg "sound\\ .wav",SND_ASYNC);
		if(KeyNameStr=="\\")
            sndPlaySound(msg "sound\\gan.wav",SND_ASYNC);
		if(KeyNameStr=="Backspace")
            sndPlaySound(msg "sound\\gan.wav",SND_ASYNC);
		if(KeyNameStr=="[")
            sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);
		if(KeyNameStr=="]")
            sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);
		if(KeyNameStr==";")
            sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);
		if(KeyNameStr=="'")
            sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);
		if(KeyNameStr==",")
            sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);
		if(KeyNameStr==".")
            sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);
		if(KeyNameStr=="/")
            sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);
		if(KeyNameStr=="Left Windows")
            sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);
		if(KeyNameStr=="Right Windows")
            sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);
		if(KeyNameStr=="Application")
            sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);
		if(KeyNameStr=="Scroll Lock")
            sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);
		if(KeyNameStr=="Num Lock")
            sndPlaySound(msg "sound\\aaaaaa.wav",SND_ASYNC);
		if(KeyNameStr=="Num -")
            sndPlaySound(msg "sound\\num-.wav",SND_ASYNC);
		if(KeyNameStr=="Num  ")
            sndPlaySound(msg "sound\\num .wav",SND_ASYNC);
		if(KeyNameStr=="Num Del")
            sndPlaySound(msg "sound\\numdel.wav",SND_ASYNC);
   } 

	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;