Author Topic: Вопрос по функционалу KEYDOWN / KEYUP  (Read 2724 times)

0 Members and 1 Guest are viewing this topic.

mixer

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Вопрос по функционалу KEYDOWN / KEYUP
« on: July 28, 2014, 07:03:36 PM »
Вопрос собственно вот в чем: Есть конфиг-файл с настройками для программы.
Там настроена "горячая" клавиша--->
...
[Keyboard]
keyHp=9
...

При использовании переменной, для назначения "горячей клавиши", и подстановке ее в конструкцию Keydown\Keyup возникает ошибка интерпритации...(пример ниже). Можно ли обойти эту проблему,сохранив возможность настройки горячей клавиши через config.ini ???

Может есть более интересный вариант "прожать" настраиваемые из ini клавиши для использования скила?!

Code: (clickermann) [Select]

$hp_color=PXL($hp_x,$hp_y)//Значение переменных есть - работают

if($hp_color!1930288)

//Берем с config.ini значение - "9" например
$giveKeyHp=iniread("config.ini","keyHp","Keyboard")
$keyHp=strconcat("#",$giveKeyHp)//Как я думаю, тут сторока "#9"

keydown(#Shift), waitms(50)
keydown($keyHp), waitms(50)//Ошибка интерпритации строки...
keyup($keyHp)   //Думал будет значение "#9" и сработает нажатие(отжатие) клавиши
keyup(#Shift)

end_if

p\s Разработчики, можете взять на заметку реализовать, если есть возможность, данную фитчу... Конечно это не приоритетные задачи, но все же было бы не плохо...
« Last Edit: July 28, 2014, 07:21:47 PM by mixer »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Вопрос по функционалу KEYDOWN / KEYUP
« Reply #1 on: July 28, 2014, 07:45:53 PM »
Нельзя передать с помощью переменной константу, но можно передать десятеричный или шестнадцатеричный  код клавиши

Code: (clickermann) [Select]
GETSCREEN
$hp_color=PXL($hp_x,$hp_y)//Значение переменных есть - работают

if($hp_color!1930288)
   
   //Берем с config.ini значение - "9" например
   $giveKeyHp=iniread("config.ini","keyHp","Keyboard")
   
   IF($giveKeyHp = 9) // клавиша 9 соответствует коду 57
      $keyHp = 57
   END_IF
   // такие же условия для сопоставления других вариантов клавиш
   
   
   keydown(#Shift)
   waitms(50)
   keydown($keyHp)
   waitms(50)
   keyup($keyHp)
   keyup(#Shift)
   
end_if

mixer

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Вопрос по функционалу KEYDOWN / KEYUP
« Reply #2 on: July 28, 2014, 07:57:20 PM »
Четко!

...Как понял, можно прилепить файл-обработчик для перевода кода клавиш, который в начале программы проверит что за клавиша установлена в ини-файле, переведет ее в 16код, и присвоит переменной значение... В файле целесообразнее использовать switch, вместо if...

Ссори! Мысли в слух... Огромное спасибо!

"Нельзя передать с помощью переменной константу, но можно передать десятеричный или шестнадцатеричный  код клавиши"

А когда-нибудь можно будет!? В версии так +100500?!

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Вопрос по функционалу KEYDOWN / KEYUP
« Reply #3 on: July 28, 2014, 08:01:50 PM »
Стоит еще помнить что iniread возвращает строку а если нужно с числом какие то вычисления производить то надо принудительно перевести в число с помощью INT.
$giveKeyHp=INT(iniread("config.ini","keyHp","Keyboard"))

mixer

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Вопрос по функционалу KEYDOWN / KEYUP
« Reply #4 on: July 28, 2014, 08:05:25 PM »
Не, ну я конечно понимаю...  ;)
Я первым делом прочитал instructions.chm, форум, а уж потом вопрос задал)))
Спасибо за ответы!!! Удачи в вашем нелегком труде!

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Вопрос по функционалу KEYDOWN / KEYUP
« Reply #5 on: August 01, 2014, 05:14:20 PM »
То что ты хочешь реализуемо с помощью KEYSTRING и без всяких констант. Правда функция чувствительна к раскладке целевого окна и самого кликера. Раскладки должны быть одинаковы.

Code: (clickermann) [Select]
$hp_color=PXL($hp_x,$hp_y)//Значение переменных есть - работают

if($hp_color!1930288)
   
   //Берем с config.ini значение - "9" например
   $keyHp=iniread("config.ini","keyHp","Keyboard")
   
   keydown(#Shift)
waitms(50)
KEYSTRING($keyHp,50)
waitms(50)
   keyup(#Shift)
   
end_if