我使用以下方法成功捕获了 Alt + F4 在我的被覆盖的wndproc
函数中:
LRESULT CALLBACK NewWndProc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
if (uMsg == WM_SYSKEYDOWN)
{
switch (wParam)
{
case VK_F4:
{
qDebug() << "Alt+F4 pressed";
break;
}
};
}
else
return CallWindowProc(OldWinProc,hwnd,uMsg,wParam,lParam);
}
我现在需要抓住 Ctrl + Alt + Tab 和 Ctrl + Alt + ←
但我似乎无法找到它们。 我知道在C#中函数中的一个参数是:
Keys keyData
我可以使用以下内容:
case Keys.Control | Keys.Alt | Keys.Q:
如何在C ++中获得这些组合键?
答案 0 :(得分:1)
使用GetKeyState
WinAPI
函数获取修改键的状态,例如 Ctrl 。例如:
case VK_LEFT:
{
if (GetKeyState(VK_CONTROL) & 0x8000)
{
qDebug() << "Alt+Ctrl+Left Arrow pressed";
break;
}
}
但请注意Windows
下的某些显卡驱动程序可以在 Ctrl + Alt + ←组合中旋转屏幕在代码获取之前拦截此组合。在驱动程序之前实现获取此键盘事件将会有点困难。但是你可以disable this feature