Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: putman on December 04, 2014, 01:39:57 PM
-
Здравствуйте.
1. Хочу чтобы диалоговое окно вызванное функцией DIALOGBOX всегда по умолчанию заполнялось англ. буквами.
Из справки не понял как пользоваться - SETKBLAYOUT, а именно как узнать какое туда писать hwnd - hwnd окна.
2. Как сделать моё окно ввода в фокусе мыши ? приходится каждый раз на него кликать, что очень неудобно.
-
Что значит "заполнялось англ. буквами"? Там же только кнопки!
SETKBLAYOUT(WNDFIND("Clickermann",0), 1033)
$dialog = DIALOGBOX("Продолжить действие", 1, 2)
halt
-
Ну и стиль у тебя :o Твой код будет работать максимум на 4.8 версии. Зачем плодить подпрограммы? IF($_return1> 0) само нахождение картинки уже условие!
SUB(проверка раскладки)
GETSCREEN
IF_PICTURE_IN (0,0,$_xmax,$_ymax, "textures\язык ру в обл уведомл.bmp")
KEYDOWN(#ALT)
WAITMS(50)
KEYDOWN(#SHIFT)
WAITMS(50)
KEYUP(#SHIFT)
KEYUP(#ALT)
WAITMS(100)
END_IF
END_SUB
проверка раскладки()
-
да было написанно для версии 4.7
подпрограммы для удобства быстрого склеивания из них скриптов.
IF($_return1> 0) нужно чтоб меняя больше или равно выбирать язык,мне в разных случаях нужны разные раскладки.
И каким чудесным образом это произойдёт?
Если картинку РУ не найдёт, то и всё условие IF($_return1> 0)... даже проверяться не будет.
-
Спасибо, с первым вопросом разобрались.
Теперь давайте со вторым.
Для переключения на Англ., нужно что бы моё окно было активно, только тогда будет понятно какой в нем включен язык.
Когда вызывается функция - inputbox, сценарий останавливается и ждет ввода данных, как кликнуть в это время по моему окну не понимаю.
Как сделать моё окно ввода в фокусе мыши ? приходится каждый раз на него кликать, что очень неудобно.
Окно вызывается этой командой:
$str = inputbox("Код, действие, количество, номер акта.",, 100)
-
Спасибо, с первым вопросом разобрались.
Теперь давайте со вторым.
Для переключения на Англ., нужно что бы моё окно было активно, только тогда будет понятно какой в нем включен язык.
Когда вызывается функция - inputbox, сценарий останавливается и ждет ввода данных, как кликнуть в это время по моему окну не понимаю.
Как сделать моё окно ввода в фокусе мыши ? приходится каждый раз на него кликать, что очень неудобно.
Окно вызывается этой командой:
$str = inputbox("Код, действие, количество, номер акта.",, 100)
Не понятно, что ты называешь "МОИМ" окном?
Окно ввода и так активно. И оно является дочерним для кликера, соответственно язык как в кликере.
-
Не понятно, что ты называешь "МОИМ" окном?
Окно ввода и так активно. И оно является дочерним для кликера, соответственно язык как в кликере.
У меня окно ввода не всегда активно.
Когда я работаю в одной программе, потом для запуска скрипта нажимаю Alt + А, то оно неактивно.
По нему всегда надо кликать что бы внести данные.
Если запустить из кликера кнопкой плей, тогда да, активно.
-
Я понял в чём проблема. Окном ввода если и пользуюсь, только при старте программы поэтому не сталкивался.
Я думал что когда доработали и сделали вынос его поверх всех окон оно становится в фокусе. Но не тут то было. Выглядит как активное в фокусе, но фокуса на нём нет.
Вот смастерил костылик, без потоков это было бы невозможно сделать.
THREAD(ibf, 0)
WNDBUMP (WNDFIND("Окно ввода", 0))
SETTHREAD (ibf, 0)
END_THREAD
SETTHREAD (ibf, 1)
$str = inputbox("Код, действие, количество, номер акта.",, 100)
У меня всё работает. Думаю на всякий случай если не будет успевать... добавить задержку в начале потока
первой строкой WAITMS(50)
-
Vint, спасибо, дома попробую.
А можно с этими потоками отслеживать гетскрином то что я ввожу в окно ?
Нужно после ввода 3-х параметров, 4-й писать русскими буквами.
Я бы гетскрином считал разделительные запятые и после третьей переключался.
-
Vint, спасибо, дома попробую.
А можно с этими потоками отслеживать гетскрином то что я ввожу в окно ?
Нужно после ввода 3-х параметров, 4-й писать русскими буквами.
Я бы гетскрином считал разделительные запятые и после третьей переключался.
Можно
THREAD(ibf, 0)
WAITMS(50)
$hwnd_ib = WNDFIND("Окно ввода", 0)
WNDBUMP ($hwnd_ib)
SETTHREAD (ibf, 0)
END_THREAD
THREAD(lentayka, 0)
UNDEFINE($ARR)
GETSCREEN
SCANPICTURE($ARR, INT($_xmax/2)-148,INT($_ymax/2),INT($_xmax/2)+148,INT($_ymax/2)+75, "comma.bmp")
IF(ARRSIZE($ARR) > 4)
SETKBLAYOUT ($hwnd_ib, 1049)
SETTHREAD (lentayka, 0)
END_IF
WAITMS(50)
END_THREAD
SETTHREAD (ibf, 1)
SETTHREAD (lentayka, 1)
$str = inputbox("Код, действие, количество, номер акта.",, 100)
SETTHREAD (lentayka, 0)
Только окно ввода не двигай по экрану.
-
Можно комментарии к скрипту ?
-
THREAD(ibf, 0) // поток, который ловит окно ввода и выводит его поверх всех
WAITMS(50) // чуть притормаживаем, чтобы окно успело создасться
$hwnd_ib = WNDFIND("Окно ввода", 0) // нашли по названию
WNDBUMP ($hwnd_ib) // поверх всех
SETTHREAD (ibf, 0) // останавливаем этот поток
END_THREAD
THREAD(lentayka, 0) // поток переключение на РУС
UNDEFINE($ARR) // удаляем массив
GETSCREEN // понятно
SCANPICTURE($ARR, INT($_xmax/2)-148,INT($_ymax/2),INT($_xmax/2)+148,INT($_ymax/2)+75, "comma.bmp") // ищем изображение запятой
IF(ARRSIZE($ARR) > 4) // если найдено больше 2 (4 пары координат)
SETKBLAYOUT ($hwnd_ib, 1049) // ставим окну ввода русский язык
SETTHREAD (lentayka, 0) // останавливаем поток чтоб не грузил и не срабатывал много раз
END_IF
WAITMS(50) // разкрузка пока ждём три запятые
END_THREAD
SETTHREAD (ibf, 1) // запускаем поток "поверх всех"
SETTHREAD (lentayka, 1) // запускаем поток "переключение на РУС"
$str = inputbox("Код, действие, количество, номер акта.",, 100)
SETTHREAD (lentayka, 0) // стоп поток "переключение на РУС" нужно если ввели меньше 3 запятых и не сработало
-
Круто !
Большое спасибо !
Почитаю по потокам инфу, видел что они появились в последней версии, но не обратил внимания.
-
Поместил в Ваш поток принудительное переключение на русский язык, но не переключает.
THREAD(ibf, 0)
$hwnd_ib = WNDFIND("Окно ввода")
WNDBUMP ($hwnd_ib)
SETKBLAYOUT ($hwnd_ib, 1049)
SETTHREAD (ibf, 0)
END_THREAD
-
Потому что нужно ожидание окна
THREAD(ibf, 0)
WHILE(WNDFIND("Окно ввода", 0) = 0) // ждем окно
WAITMS(50)
END_CYC
$hwnd_ib = WNDFIND("Окно ввода")
WNDBUMP ($hwnd_ib)
SETKBLAYOUT ($hwnd_ib, 1049)
SETTHREAD (ibf, 0)
END_THREAD
SETTHREAD (ibf, 1)
$a = INPUTBOX("Введите текст", "", 999)
HALT
-
Потому что нужно ожидание окна
Вставил Ваш код.
Окно в фокусе делает, но на англ. так и не переключает.
-
Потому что нужно ожидание окна
Вставил Ваш код.
Окно в фокусе делает, но на англ. так и не переключает.
А как оно может переключать на английский, если переключает на русский?!
1033 En
1049 Ru
-
А как оно может переключать на английский, если переключает на русский?!
1033 En
1049 Ru
[/quote]
Дурья моя голова =))))))))))))