按下home键并没有我想实现的打开网页怎么回事?
声明下, keyhook函数已成功勾住了键盘
//这样按下home键,keyhook会执行两次..打开了2个网页
LRESULT CALLBACK Keyhook(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HC_ACTION)
{
if (wParam == VK_HOME)
{
 ShellExecute(NULL, NULL, "iexplore", "http://www.csdn.net", NULL, SW_SHOW);
}
}

return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}//我的目的只想让按下home键keyhook执行一次就可以了, 但下面2种方法都没有执行.怎么回事?
LRESULT CALLBACK Keyhook(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HC_ACTION)
{
if ((lParam & 0x8000000) && (wParam == VK_HOME))
{
 ShellExecute(NULL, NULL, "iexplore", "http://www.csdn.net", NULL, SW_SHOW);
}
}

return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
LRESULT CALLBACK Keyhook(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HC_ACTION)
{
if ((HIWORD(lParam) == KF_UP) && (wParam == VK_HOME))
{
 ShellExecute(NULL, NULL, "iexplore", "http://www.csdn.net", NULL, SW_SHOW);
}
}

return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}

解决方案 »

  1.   


    LRESULT CALLBACK Keyhook(int nCode, WPARAM wParam, LPARAM lParam)
    {
        if (nCode == HC_ACTION)
        {
            if ((lParam & 0x80000000/*少了个0*/) && (wParam == VK_HOME))
            {
                 ShellExecute(NULL, NULL, "iexplore", "http://www.csdn.net", NULL, SW_SHOW);
            }            
        }
        
        return CallNextHookEx(g_hHook, nCode, wParam, lParam);
    }
      

  2.   


    你把
     return CallNextHookEx(g_hHook, nCode, wParam, lParam);
    去掉,试试看。