C++ 注销热键()在Windows Mobile上不起作用

C++ 注销热键()在Windows Mobile上不起作用,c++,winapi,windows-mobile,C++,Winapi,Windows Mobile,在调用RegisterHotKey()之后,它似乎起作用了,因为按下时音量上升/下降没有响应,但当我调用UnregisterHotKey()恢复默认值时,除非启动设备,否则音量上升/下降仍然没有响应。我怎样才能恢复它们?谢谢 void RestoreVolumeKeys() { hWndTray = FindWindow(_T("HHTaskBar"), NULL); if(hWndTray) { UnregisterHotKey((HWND)hWndTr

在调用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,//显示调用RegisterHotKey()的代码当我调用RegisterHotKey()时,我使用了实际的虚拟键值作为id,因此id和vk都具有相同的值,即vk_TVOLUMEDOWN和vk_TVOLUMEUP。
BOOL RegisterHotKey(HWND hWnd,
    int id,                       // <=== this one
    UINT fsModifiers,
    UINT vk
);