Author Topic: Clickermann v4.7 SE+ Новые возможности. Особенности.  (Read 41797 times)

0 Members and 2 Guests are viewing this topic.

ЦИТРИН

  • Супермодератор
  • Оплот сообщества
  • *
  • Posts: 484
  • Марафон опавших листьев, коктейль из дыма и мыслей
    • View Profile
  TOCLIP ("str") зависим не только от языка целевого окна, а и от языка окна кликермэна. Иначе выводились пробелы с точками.
То есть, если у меня допустим  в тхт файле есть русские буквы , они через   TOCLIP ("str") корректно   читаться  не будут , если задать  в параметрах
 SETKBLAYOUT ((WNDFIND("Clickermann - ")) , 1033) ?
 Можно как-то подробнее растолковать?
Бабочки полёт будит тихую поляну в солнечном свету...

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Смысл в том что для KEYSTRING нужно менять раскладку не только в целевом окне ввода но и в самом кликере

Code: (clickermann) [Select]
$hwnd1 = wndfind("Clickermann -") // получаем HWND окна кликера
$hwnd2 = wndfind("AkelPad") // получаем HWND окна AkelPadа
WNDSTATE ($hwnd2, 1) // фокус на окно
SETKBLAYOUT($hwnd1, 1033) // устанавливаем английскую раскладку для окон
SETKBLAYOUT($hwnd2, 1033)
 
WAITMS(100)
KEYSTRING("privet",20) // печатаем privet
 
SETKBLAYOUT($hwnd1, 1049) // устанавливаем русскую раскладку для окон
SETKBLAYOUT($hwnd2, 1049)
 
WAITMS(100)
KEYSTRING("привет",20) // печатаем привет
 
HALT
« Last Edit: December 10, 2012, 10:48:30 PM by Oraven »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Вы что ночами не спите?
Да, да вот точно... Даже просто автоматически запускать кликер со скриптом где нужно было  поKEYSTRINGить на английском обламывался. Только так запустил-переключил-GO.
(В целевом окне справлялся Punto switcher? только проходилось иногда добавлять пробел/backspace если слово одно или строка непрерывная)
to ЦИТРИН. Не воспринимай всё буквально. Тебе ничего добавлять не нужно. Возможно пока.


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Воодушевившись сообщением, что ограничение на 2 вложенных цикла сняты, начал во всю использовать многоэтажные конструкции....
И долго ломал голову, почему часть картинок не видит :o >:( :'(.
Вот примерно такая конструкция обламалась:

Code: (clickermann) [Select]
GETSCREEN 
   IF_PICTURE_IN($basik_temp,0,$_xmax, $_ymax, "textures\Lit_1.bmp")
      LOGWRITE("nashli   1")
      HINTPOPUP("nashli    1")
      GOSUB(dvigat)
   ELSE
      IF_PICTURE_IN($basik_temp,0,$_xmax, $_ymax, "textures\Lit_2.bmp")
         LOGWRITE("nashli   2")
         HINTPOPUP("nashli    2")
         GOSUB(dvigat)
      ELSE
         IF_PICTURE_IN($basik_temp,0,$_xmax, $_ymax, "textures\Lit_3.bmp")
            LOGWRITE("nashli   3")
            HINTPOPUP("nashli    3")
            GOSUB(dvigat)
         ELSE
            IF_PICTURE_IN($basik_temp,0,$_xmax, $_ymax, "textures\Lit_4.bmp")
               LOGWRITE("nashli   4")
               HINTPOPUP("nashli    4")
               GOSUB(dvigat)
            ELSE
               $basik_temp=$_xmax
               LOGWRITE("нет ")
               HINTPOPUP("нет )
               WAITMS(300)
            END_IF
         END_IF
      END_IF
   END_IF

Оказалось IF_PICTURE_IN по прежнему ограничен двумя уровнями. Это просто упущение или с IF_PICTURE_IN особые сложности?

Кстати только заметил появление параметра [currency], отдельное спасибо. :)

Всегда хотел спросить о выходе из цикла по GOTO. Но не стал т.к. опыты показали что не влияет. Может и не прав. В новой справке стоит запрет....
???
Ещё вопрос: допускается несколько выходов из подпрограммы по END_SUB ? Интерпритатор не запутается?



« Last Edit: December 12, 2012, 09:48:09 PM by Vint »


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Воодушевившись сообщением, что ограничение на 2 вложенных цикла сняты, начал во всю использовать многоэтажные конструкции....
И долго ломал голову, почему часть картинок не видит :o >:( :'(.
Вот примерно такая конструкция обламалась:
[spoiler]
Code: (clickermann) [Select]
GETSCREEN 
   IF_PICTURE_IN($basik_temp,0,$_xmax, $_ymax, "textures\Lit_1.bmp")
      LOGWRITE("nashli   1")
      HINTPOPUP("nashli    1")
      GOSUB(dvigat)
   ELSE
      IF_PICTURE_IN($basik_temp,0,$_xmax, $_ymax, "textures\Lit_2.bmp")
         LOGWRITE("nashli   2")
         HINTPOPUP("nashli    2")
         GOSUB(dvigat)
      ELSE
         IF_PICTURE_IN($basik_temp,0,$_xmax, $_ymax, "textures\Lit_3.bmp")
            LOGWRITE("nashli   3")
            HINTPOPUP("nashli    3")
            GOSUB(dvigat)
         ELSE
            IF_PICTURE_IN($basik_temp,0,$_xmax, $_ymax, "textures\Lit_4.bmp")
               LOGWRITE("nashli   4")
               HINTPOPUP("nashli    4")
               GOSUB(dvigat)
            ELSE
               $basik_temp=$_xmax
               LOGWRITE("нет ")
               HINTPOPUP("нет )
               WAITMS(300)
            END_IF
         END_IF
      END_IF
   END_IF
[/spoiler]
Оказалось IF_PICTURE_IN по прежнему ограничен двумя уровнями. Это просто упущение или с IF_PICTURE_IN особые сложности?
Кстати только заметил появление параметра [currency], отдельное спасибо. :)
Всегда хотел спросить о выходе из цикла по GOTO. Но не стал т.к. опыты показали что не влияет. Может и не прав. В новой справке стоит запрет....
Ещё вопрос: допускается несколько выходов из подпрограммы по END_SUB ? Интерпритатор не запутается?

Было не ограничение а баг, циклы FOR и WHILE ниже 2ого уровня не работали правильно.
Причем тут IF_PICTURE_IN? Это почти обычное условие, вкладывай его друг в друга сколько хочешь. Это и раньше прекрасно работало.
Смотри какое значение у переменной $basik_temp. Может область поиска неверная? Можно поставить скрипт на паузу, выделить переменную и в контекстном меню выбрать "Значение переменной".

Написано что "Запрещается использовать в теле подпрограммы инструкцию GOTO, ведущую за пределы подпрограммы, так как это может привести к ошибке", а может и не приведет... Я использовал выход из суба по гото, просто других вариантов нет, и все прекрасно работало. А вот писать несколько END_SUB в субе это уже маразм.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Начну с конца. С каких это пор несколько точек выхода из подпрограммы маразм?
Был не баг, а ограничение, которое Джони объяснил своим уровнем знаний на момент написания.
Вчера по вложенным IF_PICTURE_IN  написал тестовый скрипт. Мусолил его в разных вариантах, дальше 2-го уровня не проходил. Теперь внимание! Сегодня этот же скрипт находит все :o
Блин, да что же это такое. Что за фантомная ошибка в кликере.
Позавчера при переделке старого скрипта выяснилось, что не выполняется сложение. Начал копать, проставил везде логи, оказалось что переменная имеет значение "5"+0,17968 именно в таком виде. Копал дальше. Выяснилось: при делении число получается с запятой, а не точкой. Очистил скрипт, написал простое деление - тоже запятая. Уже собрался на форум писать. Перезагрузил кликер, результат с точкой.
Я полностью в непонятках. Т.е. ошибка может зародится спонтанная в совершенно произвольной команде.
Уже было 3 случая. Третий перестало искать заголовок окна WNDFIND в версии SE... наглухо. Выличилось только перезагрузкой компа (даже не кликера).
Всё больше писать не буду о ошибках.


Johnny

  • Создатель
  • Герой форума
  • *
  • Posts: 593
    • View Profile
могу пояснить про точку.
но сначала небольшое отступление: в россии всегда все через жопу. запомните это.

теперь поясняю. дело в том что в нашей стране безусловно очень умными людьми за стандарт было принято что разделитель дробной части это запятая. в то время как во всем остальном цивилизованном мире это точка.
кликер при запуске принудительно делает себе внушение что разделитель - точка. однако в какой то момент система Windows исходя из своих настроек снова присваивает кликеру разделителем запятую.
я сталкивался с такой ситуацией даже на работе.

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

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
могу пояснить про точку.
но сначала небольшое отступление: в россии всегда все через жопу. запомните это.
...
проблема известна. можно ее исправить через настройки региональных стандартов, можно ждать пока я выпущу очередной патч
Ага... Спасибо за разъяснение. Хоть с этим теперь понятно.


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Начну с конца. С каких это пор несколько точек выхода из подпрограммы маразм?
END_SUB означает конец суба а не точка выхода! Если бы был какой нибудь BREAK тогда другое дело, но его нет.

Был не баг, а ограничение, которое Джони объяснил своим уровнем знаний на момент написания.
Ограничение по уровням относилось только к FOR и WHILE.

zack

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Смысл в том что для KEYSTRING нужно менять раскладку не только в целевом окне ввода но и в самом кликере

странно, но у меня не срабатывает:
Code: [Select]
   $hwnd1 = wndfind("Clickermann")
   SETKBLAYOUT($hwnd1, 1049)
далее идет кейстринг на русском


вылазиют крякозябры, если я заранее поставлю русский на кликере, то все нормально

p.s. привязка к окну - вкл, все действия происходят в мозилле, в мозилле раскладка меняется
==============================================================================

разобрался,
была открыта опера с вкладкой "Clickermann v4.7 SE+..."
« Last Edit: December 17, 2012, 02:22:50 PM by zack »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Наступал на те же грабли :)
Поэтому и указал в коде с пробелами и тире: 
"Clickermann - "


zack

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Наступал на те же грабли :)
Поэтому и указал в коде с пробелами и тире: 
"Clickermann - "
мм.. у меня в заголовке кликера нет пробелов и тире
кстати так тоже пробовал не получалось

ЦИТРИН

  • Супермодератор
  • Оплот сообщества
  • *
  • Posts: 484
  • Марафон опавших листьев, коктейль из дыма и мыслей
    • View Profile
  пробовал не получалось
Не парься.
 Скачай InqSoft Window Scanner 1.7   http://kickme.to/inqsoft .
"Сканер окон.
 Эта программа позволяет не только просматривать большое количество параметров окон, таких, как размеры, видимость, текст и имя класса окна, но и изменять многие из них. Кроме того, программа способна строить дерево окон, просматривать главное меню окон,
InqSoft Window Scanner включает в себя инструменты для решения некоторых специфических задач, таких. как: захват содержимого окон с экрана, захват цвета нужного пикселя, принудительное извлечение данных из окон, редактирование памяти процесса и многое другое."

Там есть прицел. Возьми его и перетяни в  то окно, с которым будешь работать.
 Появится в окошке  и номер окна , и текст (если он есть).
 Все работает.Проверял.
Бабочки полёт будит тихую поляну в солнечном свету...

zack

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
другая проблема, как сменить язык в кликере если он сворачивается в трей?

ЦИТРИН

  • Супермодератор
  • Оплот сообщества
  • *
  • Posts: 484
  • Марафон опавших листьев, коктейль из дыма и мыслей
    • View Profile
другая проблема, как сменить язык в кликере если он сворачивается в трей?
В кликере язык  скриптовый.
Он не меняется, насколько я понимаю.
А вот работа  кликера,  по определенным командам , может менять язык раскладки, в тех окнах посторонних программ ( браузере, блокноте итп) с которыми он работает.
 Сначала  скрипт обращается к нужному окну , по заданным координатам.
( например окно в зоне экрана х- 175 у - 45)
 Берет из этого окна нужные параметры и после этого меняет там язык.
Code: (clickermann) [Select]
 
$hwnd1 = wndfind(175,45) // получаем HWND окна
 WNDSTATE ($hwnd1, 1) // фокус на окно
SETKBLAYOUT($hwnd1, 1033) // устанавливаем английскую раскладку для окна
SETKBLAYOUT($hwnd1, 1049) // устанавливаем русскую раскладку для окна
 HALT
Бабочки полёт будит тихую поляну в солнечном свету...