这是钩子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,也不发声音请问,我想做一程序,在后台响应我的键盘钩子函数,我要怎么做???,也就是说,我在写字版等其它程序中,打键盘,也响应我的函数。

解决方案 »

  1.   

    应该可以的SetWindowsHookEx的最后一个参数为0,就是HOOK所有进程。
    如果你的系统是Win98,你的 hkb 应该放在一个共享段内。
      

  2.   

    利用键盘钩子盗QQ的源代码 详细信息 < 钩子(HOOK) >  利用键盘钩子盗QQ的源代码[代码性质] VC完整应用程序代码
    [代码作者] LiJing
    [文件大小] 25K 
    [更新日期] 2003-7-12 15:25:00 
    [下载次数] 123 相关文档 相关评论 http://www.vckbase.com/code/relateddoc.asp?id=2045
      

  3.   

    利用键盘钩子开发按键发音程序》配套源代码 详细信息 < 钩子(HOOK) >  按键能发音,其关键就是让程序能够知道当前键盘上是哪个键被按下,并播放相应的声音,自己的程序当然不在话下,那么其它程序当前按下哪个键如何得知呢?利用键盘钩子便可以很好地解决。本文即是利用HOOK来实现按键发音,并提供全部源代码。[代码性质] VC可重用代码段
    [代码作者] GDGF
    [文件大小] 550K 
    [更新日期] 2002-3-8 16:26:00 
    [下载次数] 6961 相关文档 相关评论 http://www.vckbase.com/code/relateddoc.asp?id=478
      

  4.   

    《用应用程序模拟键盘和鼠标按键》配套源代码 详细信息 < 其它 >  在Windows大行其道的今天,windows界面程序受到广大用户的欢迎。对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制。有时,对于繁杂的,或重复性的输入操作,我们能否通过编制程序来代替手工输入,而用程序来模拟键盘及鼠标的输入呢?答案是肯定的。这里主要是通过两个Windows API函数来实现的。本文以 VC++为例来介绍一下如何实现这两个功能,并给出示例代码。[代码性质] VC可重用代码段
    [代码作者] Owen.Guo
    [文件大小] 22K 
    [更新日期] 2002-3-8 16:26:00 
    [下载次数] 1759  http://www.vckbase.com/code/relateddoc.asp?id=521