利用键盘钩子开发按键发音程序

http://tech.ddvip.com   2006年07月19日    社区交流

本文详细介绍利用键盘钩子开发按键发音程序

#include "mmsystem.h"

  并且点击VC++菜单上的“工程”-“设置”进入Link属性页,在L对象/库模块下输入:winmm.lib后确定即可.

  (4)添加输出标识

  在Hook.def的末尾添加

  installhook
KeyboardProc

  短短的四步,键盘钩子的制作算是完成了,编译生成后的DLL文件就可以自由的用别的程序来调用了.

  在程序中如何调用DLL呢?那就简单了.再用VC++6.0新建一个MFC AppWizard(exe)工程,命名为KeySound,点击"确定"后选择程序类型为对话框,直接点击确定即可.

  在KeySoundDlg.cpp文件中的OnInitDialog()初始化函数的CDialog::OnInitDialog();下面添加:

  //阻止程序反复驻留内存,也为了防止有两个程序同时读取DLL而发生错误.

  CreateMutex(NULL, FALSE, "KeySound");
if(GetLastError()==ERROR_ALREADY_EXISTS)
  OnOK();
//读取DLL
static HINSTANCE hinstDLL;
typedef BOOL (CALLBACK *inshook)();
inshook instkbhook;
if(hinstDLL=LoadLibrary((LPCTSTR)"Hook.dll"))
{
  instkbhook=(inshook)GetProcAddress(hinstDLL,"installhook"); 
  instkbhook();
}
else
{
  MessageBox("当前目录找不到Hook.dll文件,程序初始化失败");
  OnOK();
}

  将编译生成后的KeySound.exe和Hook.dll放在同一目录下,定义好声音文件,运行KeySound.exe后打开记事本或写字板,体验一下系统为您即时快速地朗读您按下的每一个键的快感吧^-^

  有一点必须说明,标准键盘有101个键,您想让多少键发声音,就必须在上面的KeyboardProc动作里定义多少个键,常用的10个数字键和26个英文字母不会给您带来太大的困难,只要相应的'A'对应A键,'1'对应1键就可以,但如果您希望能让更多的键都有各种特色音乐的话,很可能会遇到一些键盘编码上的麻烦,比如ESC键就不能简单的用'ESC'来搞定了,得用VK_ESCAPE,又比如Alt键得用VK_MENU来定义,没有个键盘编码表的话会令人相当头疼,这里我介绍一种让程序来告诉您键盘按键名称的方法:

作者:GDGF    责编:豆豆技术应用

正在加载评论...