Author Topic: Ошибка автоматической записи сценария "Переключение раскладки"  (Read 2576 times)

0 Members and 1 Guest are viewing this topic.

Uznayka

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Нажимаю Alt+R (пошла запись)
Нажимаю Alt+Shift (переключаю раскладку клавиатуры)
Нажимаю Alt+S (останавливаю запись)
Результат:
Code: [Select]
// RECORDED SCRIPT 29.03.2015
// BEGIN AT 22:03:37
waitms(1999)
  keyDown(18)
waitms(0)
  keyDown(164)
waitms(197)
  keyDown(160)
waitms(1)
  keyDown(16)
waitms(82)
  keyUp(16)
waitms(0)
  keyUp(160)
waitms(148)
  keyUp(18)
waitms(1)
  keyUp(164)
waitms(1315)
// deleted
waitms(1)
// deleted
waitms(245)
// deleted
waitms(5)
  keyUp(18)
waitms(0)
  keyUp(83)
waitms(1)
  keyUp(164)
// FINISH AT 22:03:41
Что это за клавиши keyDown(164) и keyDown(160)?
Заметил, что появление в коде keyDown(164) может приводить к проглатыванию следующей нажатой клавиши или нажатия мышки (т.е. в коде есть, а реального нажатия при проигрывании скрипта нет).

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Что это за клавиши keyDown(164) и keyDown(160)?

В записи идет код как обшей клавиши так и конкретно левой или правой.
Code: (clickermann) [Select]
keyDown(164) // левый Alt
keyDown(160) // левый Shift

Вот тут перечислены все коды клавиш, только в шеснадцатиричном виде. http://api.farmanager.com/ru/winapi/virtualkeycodes.html

После нажатия Alt может уйти фокус с приложения, отсюда и проглатывание.

Вообще запись тут мало кому интересна, есть нормальные команды сменить раскладку.
Code: (clickermann) [Select]
SETKBLAYOUT(WNDFIND("Заголовок окна", 0), 1033) //1033 En или 1049 Ru