Отмена регистрации горячей клавиши Alt-Tab в Windows 7 - PullRequest
7 голосов
/ 20 июля 2010

Я думаю, что эту проблему должно быть легко решить, и я привел ее сюда, потому что я действительно чувствую, что искал решение повсюду.

Мой код написан на C # и должен просто перезаписать горячую клавишу Alt-Tab.Эта строка работает в XP, но возвращает false в 7:

RegisterHotKey(handle, ID__ALT_TAB, MOD_ALT, VK_TAB)); 

Я знаю, что Windows 7 теперь требует, чтобы я отменил регистрацию горячей клавиши, прежде чем смогу зарегистрировать свою новую, и в этом проблема.Когда я проверяю последний код ошибки, я получаю код 1409, то есть горячая клавиша уже существует.Однако, если я вызову эту строку раньше, чем указанную выше:

UnregisterHotKey(handle, ID__ALT_TAB)); 

Эта строка не будет выполнена, и код последней ошибки будет установлен в 1419, что означает, что такой горячей клавиши не существует.Эти строки работают в XP, и я могу зарегистрировать горячую клавишу, а затем отменить ее регистрацию.Я полагаю, это потому, что я пытаюсь отменить регистрацию горячей клавиши с неверным идентификатором, так как ID_ALT_TAB определяется самостоятельно.Мне не удалось найти правильный идентификатор уровня Windows Alt-Tab HotKey.Любая помощь или общие указания будут с благодарностью.

Ответы [ 4 ]

1 голос
/ 22 июля 2010

Я не думаю, что есть способ сделать это. Не говоря уже о том, что даже если вам удастся как-то зарегистрировать вашу горячую клавишу поверх существующей, что произойдет, когда закроется ваше приложение? Внезапно Alt-Tab вообще не открывается.

Скорее, я бы пошел с другим ярлыком, чтобы вызвать вашу замену. Может быть, Ctrl-Alt-Tab?

1 голос
/ 22 июля 2010

Не уверен, что вы уже видели это ? Возможно, придется немного поработать с Си здесь. Я думаю, что вы сможете перехватить удар Alt + Tab с помощью этого кода, а затем делать все, что вы хотите в его месте, но я не уверен.

РЕДАКТИРОВАТЬ: См. Также это для некоторых старых работ VB, которые вам, возможно, придется перевести на C #.

0 голосов
/ 26 февраля 2013

UnregisterHotKey работает нормально и возвращает 0, когда он запускается из того же шага, где была выполнена регистрация, поэтому убедитесь, что вы отменили регистрацию горячих клавиш в том же потоке, в противном случае он возвращает 1419. Протестировано в Vista.

0 голосов
/ 20 июля 2010

Вы также запускали программу от имени администратора (вместо того, чтобы просто войти в систему как администратор)?После того, как программы XP не обязательно получают права администратора только потому, что пользователь является администратором, вы можете попробовать щелкнуть правой кнопкой мыши Запуск от имени администратора (или аналогичного).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...