这是钩子dll里的代码
---------------------------------------------------
HINSTANCE hins; //钩子函数所在模块的句柄BOOL installhook()
{
hkb=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,(HINSTANCE)AfxGetApp()->m_hInstance,0);
return TRUE;
}LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
{
switch(wParam) //键盘按键标识
{
case '1':sndPlaySound("1.wav",SND_ASYNC);break ;//当数字键1被按下
case '2':AfxMessageBox("2");break;
case '3':AfxMessageBox("3");break;
case '4':AfxMessageBox("4");break;
}
} LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
return RetVal;
}
---------------------------------------------------
下面是一个对话框中调用dll的代码,在OnInitDialog()中
------------------------------------
//读取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();
}
return TRUE; // return TRUE unless you set the focus to a control
}对话框程序运行时,我按1键,它发声音,但是当我切换到其它程序时,比如写字板时,也希望我按1,它发声音可是不行。。就象是没有钩到键盘一样。而且,你再回到对话框时,按1,也不发声音请问,我想做一程序,在后台响应我的键盘钩子函数,我要怎么做???,也就是说,我在写字版等其它程序中,打键盘,也响应我的函数。
---------------------------------------------------
HINSTANCE hins; //钩子函数所在模块的句柄BOOL installhook()
{
hkb=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,(HINSTANCE)AfxGetApp()->m_hInstance,0);
return TRUE;
}LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))
{
switch(wParam) //键盘按键标识
{
case '1':sndPlaySound("1.wav",SND_ASYNC);break ;//当数字键1被按下
case '2':AfxMessageBox("2");break;
case '3':AfxMessageBox("3");break;
case '4':AfxMessageBox("4");break;
}
} LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
return RetVal;
}
---------------------------------------------------
下面是一个对话框中调用dll的代码,在OnInitDialog()中
------------------------------------
//读取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();
}
return TRUE; // return TRUE unless you set the focus to a control
}对话框程序运行时,我按1键,它发声音,但是当我切换到其它程序时,比如写字板时,也希望我按1,它发声音可是不行。。就象是没有钩到键盘一样。而且,你再回到对话框时,按1,也不发声音请问,我想做一程序,在后台响应我的键盘钩子函数,我要怎么做???,也就是说,我在写字版等其它程序中,打键盘,也响应我的函数。
解决方案 »
- C语言程序中可以CreateThread(...), CreateEvent(...) 吗?
- 界面要求支持中文和英文,应该怎么做
- 画圆
- 圆形控制的实现,以及图片旋转任意角度
- 下周一去新公司上班了,台资企业,散分吧。。。。。。
- 还原主窗口
- 200分求助,以MainFrame做父窗口的Dailaog,收不到鼠标消息?在线等待!
- 我的ComboBox用的是Drop List模式,为什么会出现List Box拉不下来的情况?
- 如何读取注册表中值和如何列举出同属于某种数据类型的数据源的名称和存储位置?
- 如何在windows下设置某个程序在开机后,但不登录,运行某个exe程序
- MsFlexGrid控件打包问题!
- ActiveX 连接库 mfc42u.lib
如果你的系统是Win98,你的 hkb 应该放在一个共享段内。
[代码作者] LiJing
[文件大小] 25K
[更新日期] 2003-7-12 15:25:00
[下载次数] 123 相关文档 相关评论 http://www.vckbase.com/code/relateddoc.asp?id=2045
[代码作者] GDGF
[文件大小] 550K
[更新日期] 2002-3-8 16:26:00
[下载次数] 6961 相关文档 相关评论 http://www.vckbase.com/code/relateddoc.asp?id=478
[代码作者] Owen.Guo
[文件大小] 22K
[更新日期] 2002-3-8 16:26:00
[下载次数] 1759 http://www.vckbase.com/code/relateddoc.asp?id=521