2012-04-20 85 views
0

调用RegisterHotKey()后,它似乎工作,因为音量上/下按钮时不响应,但当我调用UnregisterHotKey()恢复默认时,音量上/下仍然没有响应除非启动设备。我怎样才能恢复它们?谢谢。UnregisterHotKey()在Windows Mobile上不起作用

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); 

     } 
    } 
} 
+0

显示调用RegisterHotKey()的代码 – 2012-04-20 00:33:23

回答

2

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

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

总是检查winapi函数的返回值来发现这样的错误。

+0

当我调用RegisterHotKey()时,我使用实际的虚拟键值作为id,因此id和vk都具有相同的值,分别是VK_TVOLUMEDOWN和VK_TVOLUMEUP。 – Lufia 2012-04-20 18:13:27