Подтвердить что ты не робот

Комбинация клавиш Shift + Ctrl + 0, не видимая приложением в Windows Vista

Я начинаю с нового приложения Delphi VCL, добавляю Menus к предложению uses, бросаю метку в форме и назначаю форму OnShortCut event:

procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
  Label1.Caption := ShortCutToText(ShortCut(Msg.CharCode, KeyDataToShiftState(Msg.KeyData)));
end;

В XP это работает правильно для всех сочетаний сочетаний клавиш, которые я пытался, включая Shift + Ctrl + 0. В Vista и Windows 7 тестовое приложение отображает Shift + Ctrl + 1 через Shift + Ctrl + 9, но не Shift + Ctrl + 0. Другие комбинации, такие как Shift + 0, Ctrl + 0 и даже Shift + Ctrl + Alt + 0 отображаются в порядке.

Запустив приложение в отладчике, я обнаружил, что событие OnShortCut никогда не запускается с Msg.CharCode = Ord ('0'), если клавиши Shift и Ctrl удерживаются нажатием клавиши 0.

У Delphi IDE есть такая же проблема в Vista. Ctrl + Shift + 1 устанавливает закладку 1, но Ctrl + Shift + 0 не устанавливает закладку 0, что и должно быть.

Я тестировал это с Delphi 2007 и 2010 на девственных установках Windows Vista и 7 в VMware, поэтому нет стороннего программного обеспечения, удерживающего ключи. Я не пробовал другие инструменты разработки, чтобы определить, есть ли проблема с Delphi или с самой Vista.

4b9b3361

Ответ 1

Shift + Ctrl + 0 предварительно назначается в Vista редактору методов ввода (IME):

http://support.microsoft.com/kb/967893

Это решит вашу проблему, но повлияет на пользователей IME (в основном на азиатские версии), поэтому вам не стоит использовать этот ярлык.

Ответ 2

Кажется, вы не первый, кто спросил об этом, я нашел этот поток на форумах How-To Geek.

Затем я нашел this Статья базы знаний MS:

"Ярлык клавиатуры редактора методов ввода (CTRL + SHIFT + 0) переключает язык ввода в Vista"

Используется для переключения между языками. Существует обходной путь, чтобы отключить это. Я просто попробовал, и он работает, приложение теперь распознает CTRL + SHIFT + 0.

Ответ 3

Попробуйте старую школу Ctrl + K Ctrl + 0, чтобы установить закладку 0.