我有以下方法试图拦截全球媒体Dispose
:
ALT + Z
此方法几乎可以正常工作,但每次输入键命令时都会显示两次“ALT + Z”消息。
最初,我认为我正在捕获事件两次,一次是在按下private int KbHookProc(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0)
{
var hookStruct = (KbLLHookStruct)Marshal.PtrToStructure(lParam, typeof(KbLLHookStruct));
bool altDown = GetKeyState(VK_ALT) != 0;
if (altDown)
{
if(hookStruct.vkCode == 0x5A) //alt + z
{
MessageBox.Show("ALT + Z");
}
}
}
return CallNextHookEx(_hookHandle, nCode, wParam, lParam);
}
时,一次是在Z
被释放时。我尝试修改代码以检查Z
变量,以查看事件是否是键上或下事件。
wParam
但是,在这种情况下,当我输入键命令时不会显示任何消息。
我在这里缺少什么?