2
내가, http://www.codeproject.com/KB/cs/CSLLKeyboardHook.aspx에서C# 개 keyhook 질문이
public int hookProc(int code, int wParam, ref keyboardHookStruct lParam)
{
if (code >= 0)
{
Keys key = (Keys)lParam.vkCode;
if (HookedKeys.Contains(key))
{
KeyEventArgs kea = new KeyEventArgs(key);
if((wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) && (KeyDown != null))
{KeyDown(this, kea) ;}
else if ((wParam == WM_KEYUP || wParam == WM_SYSKEYUP) && (KeyUp != null))
{KeyUp(this, kea); }
if (kea.Handled)
{return 1;}
}
}
lParam.vkCode ++;
lParam.scanCode ++;
return CallNextHookEx(hhook, code, wParam, ref lParam);
}
그것은 잘 작동하지만 다음 코드를 복사 나는 약간의 변화를 할 때 :
lParam.vkCode ++;
or
lParam.scanCode ++;
직전 반환 CallNextHookEx (...) 원래 키는 여전히 메모장에 나타납니다. Ex. "a"를 누르면 메모장의 편지가 "b"이지만 여전히 "a"가 될 것으로 예상됩니다. "lParam"이 변경되지 않는 것 같습니다. 이유를 이해할 수 없습니까?