Эмуляция клавиш alt-tab приводит к зависанию меню на экране

0

Мне нужно создать специальную горячую клавишу для функции alt-tab. Я делаю это с SendInput, отправив соответствующие ключи, и он работает нормально.

Однако, если горячая клавиша уже включает Alt-ключ, программе нужно только нажать и отпустить вкладку; но это приводит к тому, что меню alt-tab застрянет на экране даже, и единственный способ уйти - закрыть мою программу. Как это могло произойти, и что закрывает мою программу, чтобы меню исчезло?

С другой стороны, при любых нажатиях клавиши send (alt down) (tab down) (tab up) (вверх) остаются вне зависимости от того, работает ли alt уже во всех случаях, но я не могу полагаться на это поведение по другим причинам.

Я использую WinXP, если это помогает, я еще не пробовал его на компьютере Win7.

  • 1
    Это хлопотно, состояние клавиатуры является свойством каждого процесса, и вы не можете узнать, какое состояние клавиатуры для любого процесса, который владеет окном переднего плана. Это не будет соответствовать вашему. Так что вы, вероятно, делаете что-то не так, мы этого не видим.
  • 0
    И все же, как это вызывает застревание окна alt-tab на экране? Я проверил, что все, что делает моя программа, это отправляет (вкладка вниз) (вкладка вверх) ввод. Что еще более странно, почему закрытие программы заставляет ее исчезнуть?
Показать ещё 1 комментарий
Теги:
winapi
sendinput

2 ответа

0

Я не знаю, связано ли это, но Alt + Ctrl + Tab заставляет меню застревать, как если бы Alt придерживался при нажатии Alt + Tab. Возможно, вы как-то посылаете сигнал Ctrl.

0

Возникла аналогичная проблема, вызванная выполнением PostMessage WM_KEYDOWN, VK_TAB, в событии, вызванном нажатием кнопки ALT-N для отмены действия. Таким образом, клавиша ALT была нажата, когда табуляция была отправлена. Поскольку наш код никогда не отправляет WM_KEYUP, он, должно быть, запутал Win XP. Выйдите из меню alt-tab на экране, пока приложение не выйдет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню