在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例Windows系统编程 → c++ 键盘钩子(按键发出相应的字母声音)

c++ 键盘钩子(按键发出相应的字母声音)

Windows系统编程

下载此实例
  • 开发语言:C/C++
  • 实例大小:0.53M
  • 下载次数:23
  • 浏览次数:331
  • 发布时间:2018-08-24
  • 实例类别:Windows系统编程
  • 发 布 人:crazycode
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 键盘 钩子 按键 c++ 声音

实例介绍

【实例简介】

【实例截图】

from clipboard

【核心代码】

//键盘钩子
// 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;

实例下载地址

c++ 键盘钩子(按键发出相应的字母声音)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警