调用RegisterHotKey()之后,它似乎可以正常工作,因为按时音量调高/降低不响应,但是当我调用UnregisterHotKey()恢复默认值时,除非启动设备,音量调高/降低仍然没有响应。如何恢复它们?谢谢。

void RestoreVolumeKeys()
{
    hWndTray = FindWindow(_T("HHTaskBar"), NULL);
    if(hWndTray)
    {
        UnregisterHotKey((HWND)hWndTray, VK_TVOLUMEDOWN);
        UnregisterHotKey((HWND)hWndTray, VK_TVOLUMEUP);

    }
    else//HHTaskBar not found then try find Tray
    {
        hWndTray = FindWindow(_T("Tray"), NULL);
        if(hWndTray)
        {
            UnregisterHotKey((HWND)hWndTray, VK_TVOLUMEDOWN);
            UnregisterHotKey((HWND)hWndTray, VK_TVOLUMEUP);

        }
    }
}

最佳答案

您没有正确使用它。第二个参数不是虚拟密钥,它是您在RegisterHotKey()调用中使用的id

BOOL RegisterHotKey(HWND hWnd,
    int id,                       // <=== this one
    UINT fsModifiers,
    UINT vk
);


始终检查winapi函数的返回值以查找类似的错误。

10-07 23:02