Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Message.wParam равен VK_BACKSPACE: клавиша, которую не жал, порождает сообщение?  (Прочитано 8912 раз)
0 Пользователей и 1 Гость смотрят эту тему.
malor
Опытный

ru
Offline Offline

« : 09-08-2011 17:19 » 

Есть простейшая программа - форма, на ней TImage  и таймер. запускаю ее и начинаю на клаве набивать символы, хаотично, иногда цифры, Enter, Alt+Shift, пробел, в общем, кнопки на основном участке клавиатуры.
В какой-то момент в программа останавливается на breakpoint'е:


8 - это виртуальный код клавиши BackSpace. Но я её не жму! Откуда он взялся?



Вот как лог выглядит:
Цитата
.................etc ........................
wParam: 68 lParam: 2097153
wParam: 70 lParam: 2162689
wParam: 68 lParam: -1071644671
wParam: 83 lParam: -1071710207
wParam: 70 lParam: -1071579135
wParam: 13 lParam: 1073741825
wParam: 13 lParam: -2145648639
wParam: 83 lParam: 2031617
wParam: 70 lParam: 2162689
wParam: 8 lParam: 1
wParam: 8 lParam: -1073741823
wParam: 8 lParam: 1
wParam: 8 lParam: -1073741823
wParam: 83 lParam: 1073741825
wParam: 83 lParam: -1073741823
wParam: 70 lParam: 1073741825
wParam: 70 lParam: -1073741823
wParam: 83 lParam: -2145452031
................etc .........................

Код: (Delphi)
procedure TMainForm.Wndproc(var Message: TMessage);
var
    strLog: AnsiString;
begin

  case Message.Msg of
    WM_KEYDOWN, WM_SYSKEYDOWN, WM_SYSKEYUP, WM_KEYUP:

    begin
      strLog := 'wParam: ' + IntToStr(Message.wParam) + ' lParam: ' + IntToStr(Message.lParam);
    end;

  else
    inherited;
  end;

end;

Как отследить откуда прилетел месидж?

Delphi XE

* WorkBS.zip (140.46 Кб - загружено 728 раз.)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 10-08-2011 03:35 » 

1) это каким-либо образом мешает хаотично нажимать клавиши?
2) возникает ли эта ситуация, если не нажимать хаотично клавиши?
3) возможно, хаотично нажимая клавиши, ты подбираешь некую комбинацию клавиш, означающую ввод кода VK_BACK или VK_BROWSER_BACK (может, она тоже такой код генерит впоследствии)
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 10-08-2011 08:53 » 

Код "8" может возникнуть при CTRL+H ( ^H) или ctrl+shift+h
Записан

С уважением, Oldy.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 10-08-2011 18:10 » 

ага, в блокноте ctrl+shift+h стирает букву )
Записан

Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 11-08-2011 06:57 » new

Еще Alt+0+8. Цифры на доп. клавиатуре при включенном Num Lock
Записан

С уважением, Oldy.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines