06.10.2012, 00:02
|
|
.
|
|
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
|
|
Вот взято из MSDN
Код:
hhook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hinst, 0);
LRESULT LowLevelKeyboardProc(INT nCode, WPARAM wParam, LPARAM lParam)
{
static BOOL fShiftPressed = FALSE;
BOOL fHandled = FALSE;
if (nCode == HC_ACTION)
{
KBDLLHOOKSTRUCT *pkbdllhook = (KBDLLHOOKSTRUCT *)lParam;
switch (wParam)
{
case WM_SYSKEYDOWN:
switch (pkbdllhook->vkCode)
{
case VK_LSHIFT:
case VK_RSHIFT:
{
// the user pressed the shift key
fShiftPressed = TRUE;
break;
}
case VK_TAB:
{
if (pkbdllhook->flags & LLKHF_ALTDOWN)
{
// the user pressed Alt+Tab, execute AltTab hotkey handler
fHandled = TRUE;
}
break;
}
case VK_ESCAPE:
{
if (pkbdllhook->flags & LLKHF_ALTDOWN)
{
// the user pressed Escape, end the AltTab container
// window without switching the selected window
fHandled = TRUE;
}
break;
}
}
break;
case WM_KEYUP:
case WM_SYSKEYUP:
switch (pkbdllhook->vkCode)
{
case VK_LMENU:
case VK_RMENU:
{
// the user let go of the Alt key, end the AltTab container
// window switching to the selected window
break;
}
case VK_LSHIFT:
case VK_RSHIFT:
{
// the user released the shift key
fShiftPressed = FALSE;
break;
}
}
break;
}
}
return (fHandled ? TRUE : CallNextHookEx(hhook, nCode, wParam, lParam));
}
как видишь, проверку на Shift сделать не трудно.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
|