目的:
我想在DLL中实现按Pause后就打开个Messagebox,但是我用了SetWindowsHookEX()
Function后并在LRESULT CALLBACK HookProc() function 中调用了CallNextHookEx(),但是当我挂上钩子后发现按Pause 可以实现我的功能,但是其他的按键却不好用了,不知何故,HELP ME!!!
 
源程序:
#include "stdafx.h"
#include "myhookl.h"
#pragma data_seg ("share")
HHOOK hhkHook=NULL;
HINSTANCE hInstance=NULL;
#pragma data_seg ()#pragma  comment(linker,"/SECTION:share,RWS")BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
 )
{
    hInstance=(HINSTANCE)hModule;
return 1;
}LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam)
{
CallNextHookEx(hhkHook,nCode,wParam,lParam);
if(nCode>=0)
{
switch(wParam)
{
case VK_PAUSE:
 if(!(::FindWindowEx(0,0,0,"my")))
MessageBox(0,"my ook","my",MB_OK);
// return 1;
}
//return 1;
}
 
 return 1;
}
BOOL install()
{
hhkHook=::SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)HookProc,hInstance,0);
return 1;
}
BOOL uninstall()
{
UnhookWindowsHookEx(hhkHook);
return 0;
}

解决方案 »

  1.   

    you should change to
    LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam)
    {

    if(nCode>=0)
    {
    switch(wParam)
    {
    case VK_PAUSE:
     if(!(::FindWindowEx(0,0,0,"my")))
    MessageBox(0,"my ook","my",MB_OK);
    // return 1;
    }
    //return 1;
    }
     CallNextHookEx(hhkHook,nCode,wParam,lParam);
     return 1;
    }
      

  2.   

    还是不行我的程序能响应pause,但是在别的程序如记事本中,按其他的键就不好用了呀
    怎么回事呀
      

  3.   

    //try change to this,
    LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam)
    {

    WORD wKey = (WORD)wParam;
        if((HC_ACTION == nCode) {
    switch(wKey)
    {
    case VK_PAUSE:
     if(!(::FindWindowEx(0,0,0,"my")))
    MessageBox(0,"my ook","my",MB_OK);
    // return 1;
    }
    //return 1;
    }
     CallNextHookEx(hhkHook,nCode,wParam,lParam);
     return 1;
    }
    //for more details ,see
    http://www.vckbase.com/document/viewdoc.asp?id=271
      

  4.   

    return CallNextHookEx(hhkHook,nCode,wParam,lParam);
      

  5.   

    楼上的 sunyard()说的对,昨天晚上我就试成功了
    谢谢各位!!