Я хочу запретить пользователю моего приложения использовать alt-tab.Я пытаюсь решить эту проблему с помощью низкоуровневой клавиатуры.
Настройка работает отлично, процедура обратного вызова запускается, когда я нажимаю комбинацию клавиш и т. Д. Странная вещь, которая происходит, - это то, что я могу-tab вне приложения, но затем alt-tabbing полностью отключается.Я переключаю приложения с помощью мыши и пробую alt-tabbing, но ничего не происходит.Я снова переключаюсь на свое приложение и снова нажимаю alt-tab, и оно переключает приложение, но только на один шаг.Когда из моего приложения alt-tab больше не работает.
Я пробовал разные сценарии, сначала я подумал, что это как-то связано с отладчиком в VS2010, но нет, запустив его без отладчика.дает те же результаты.
Полностью ли я неправильно понял эту процедуру перехвата, она предназначена только для перехвата вещей, происходящих, когда приложение не в фокусе?
osman.hpp:
static HHOOK m_hhook;
static LRESULT CALLBACK lowLevelKeyboardProc( int key, WPARAM wParam, LPARAM lParam );
osman.cpp:
HHOOK OSMan::m_hhook;
/*
* pseudo init code
*/
void OSMan::init()
{
m_hHook = SetWindowsHookEx( WH_KEYBOARD_LL, (HOOKPROC)lowLevelKeyboardProc, 0, 0 );
}
LRESULT CALLBACK OSMan::lowLevelKeyboardProc( int key, WPARAM wParam, LPARAM lParam )
{
KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;
switch (key)
{
case HC_ACTION:
{
if (pkbhs->vkCode == VK_TAB && pkbhs->flags & LLKHF_ALTDOWN)
return 1;
}
default:
break;
}
return CallNextHookEx( m_hHook, key, wParam, lParam);
}
изменить: