Author Topic: Ввод текста  (Read 22122 times)

0 Members and 2 Guests are viewing this topic.

security

  • Освоившийся
  • **
  • Posts: 68
    • View Profile
Re: Ввод текста
« Reply #15 on: November 14, 2015, 07:12:19 PM »
Спасибо, прочитал. Жаль, что не работает. Postmessage тоже не получилось, а keystring к сожалению не получился еще с самого начала, я это тоже укащщзывал. так как же быть может стоит написать процедуру как я предложил? в цикле побуквенно читаем и нажимаем. у меня единственная трудность как из символа получить его ASCII код и как читается строка посимвольно в clickermann?

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Ввод текста
« Reply #16 on: November 14, 2015, 07:15:40 PM »
Спасибо, прочитал. Жаль, что не работает. Postmessage тоже не получилось, а keystring к сожалению не получился еще с самого начала, я это тоже укащщзывал. так как же быть может стоит написать процедуру как я предложил? в цикле побуквенно читаем и нажимаем. у меня единственная трудность как из символа получить его ASCII код и как читается строка посимвольно в clickermann?

я ж написал, вазми кейстринг вот отсюда http://crapware.aidf.org/forum/index.php?topic=2111.0, именно там побуквенно читает и нажимает, если несработает с помощью постмесадж который там присутствует, то замени его на кейпресс.

security

  • Освоившийся
  • **
  • Posts: 68
    • View Profile
Re: Ввод текста
« Reply #17 on: November 14, 2015, 07:48:41 PM »
dramster, благодарю. Сейчас попробую. Я просто думал keystring которая встроенная в clickermann

security

  • Освоившийся
  • **
  • Posts: 68
    • View Profile
Re: Ввод текста
« Reply #18 on: November 14, 2015, 09:11:27 PM »
Попробовал, ваш вариант в поле ввелось вместо моего текста -/0/-, попробовал на основе ваших исходников написать свою функцию, получилось то же самое.
Весь код прикладываю

Code: (clickermann) [Select]
#name "test"
 
$hwnd = wndfind("BlueStacks App Player")
$pause = 1000

if($hwnd > 0)
wndgetinfo($hwnd, $x, $y, $size_x, $size_y)
hset($hwnd, 1)
else
print("BlueStasks не найден")
halt
end_if

sub(sendkeys, $string)

for($j = 1, $j < strlen($string) + 1)

$char = strcut($string, $j, 1)
$key = 0

switch($char)

case("a")
$key=97
print("a")

case("b")
$key=98
print("b")

case("c")
$key=99
print("c")

case("d")
$key=100
print("d")

case("e")
$key=101
print("e")

case("f")
$key=102
print("f")

case("g")
$key=103
print("g")

case("h")
$key=104
print("h")

case("i")
$key=105
print("i")

case("j")
$key=106
print("j")

case("k")
$key=107
print("k")

case("l")
$key=108
print("l")

case("m")
$key=109
print("m")

case("n")
$key=110
print("n")

case("o")
$key=111
print("o")

case("p")
$key=112
print("p")

case("q")
$key=113
print("q")

case("r")
$key=114
print("r")

case("s")
$key=115
print("s")

case("t")
$key=116
print("t")

case("u")
$key=117
print("u")

case("v")
$key=118
print("v")

case("w")
$key=119
print("w")

case("x")
$key=120
print("x")

case("y")
$key=121
print("y")

case("z")
$key=122
print("z")

case("0")
$key=48
print("0")

case("1")
$key=49
print("1")

case("2")
$key=50
print("2")

case("3")
$key=51
print("3")

case("4")
$key=52
print("4")

case("5")
$key=53
print("5")

case("6")
$key=54
print("6")

case("7")
$key=55
print("7")

case("8")
$key=56
print("8")

case("9")
$key=57
print("9")

case("@")
$key=64
print("@")

case(".")
$key=46
print(".")


end_switch

keypress($key)
waitms(rnd(16, 64))

end_cyc

end_sub

for($i = 1, $i < tfcount("accounts.txt") + 1)

$line = tfread("accounts.txt", $i)
$username = strcut2($line, 1, strpos($line, ":") - 1)
$password = strcut2($line, strpos($line, ":") + 1, strlen($line))

lclick(36, 100)
waitms($pause)

lclick(532, 655)
waitms($pause)

lclick(800, 400)
waitms($pause)

sendkeys($username)
waitms($pause)

keypress(#Enter)
waitms(50)

end_cyc

halt

Для любопытных записал видео работы.
Скажите пожалуйста, что может быть не так?
http://rghost.ru/7xzkYbh9s

security

  • Освоившийся
  • **
  • Posts: 68
    • View Profile
Re: Ввод текста
« Reply #19 on: November 14, 2015, 09:13:13 PM »
Ой, забыл еще добавить. Почему-то эмулятор переходит в полноэкранный вид, хотя в коде этого нету!

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Ввод текста
« Reply #20 on: November 14, 2015, 09:21:41 PM »
сорри, я забыл, про мои коды клавиш (те что в а_кейстринг) они немного другие, работают в сообщении CHAR. коды кнопок, которые ты будеш использовать в кейпресс все в справке КМ есть - "приложение 1: коды клавиш"

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Ввод текста
« Reply #21 on: November 14, 2015, 09:34:41 PM »
попробуй вот так.
Code: (clickermann) [Select]
#include "alt_winmode.cms"

$hwnd = wndfind("BlueStacks App Player")
$pause = 1000

if($hwnd = 0)
   print("BlueStasks не найден")
   halt
end_if

// Нажимаем на аватар
A_LCLICK(36, 100, $hwnd)
waitms($pause)

// Нажимаем поменять аккаунт
A_LCLICK(532, 655, $hwnd)
waitms($pause)

// Нажимаем ввод почты
A_LCLICK(800, 400, $hwnd)
waitms(50)

A_KEYSTRING ("test@тест.ру", 5, $hwnd)

// Кликаем на пустое поле для подтверждение ввода
A_LCLICK(800, 450, $hwnd)
waitms($pause)

halt

alt_winmode.cms естественно должен быть рядом с основным скриптом. еще проверь, чтобы wndfind("BlueStacks App Player") был равен тому hwnd, который в поле ввода (направить курсор туда где вводить логин и в кликермане проверить hwnd) . для надежности можно попробовать ввести его вручную.

и еще, keys.txt также долженбыть в одном коталоге с alt_winmode.cms и основным скриптом.

с этим варианотом привязываться необязательно.
« Last Edit: November 14, 2015, 09:39:31 PM by dramster »

security

  • Освоившийся
  • **
  • Posts: 68
    • View Profile
Re: Ввод текста
« Reply #22 on: November 14, 2015, 09:47:46 PM »
Попробовал твой вариант, к сожалению тоже не поддерживаются символ точка и собака, его и в справке нету.
Я поменял размер регистра букв и сразу все заработало в моем коде, только не печатается как уже говорил точка и @.
Эх, как жаль( Похоже нету больше вариантов

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Ввод текста
« Reply #23 on: November 14, 2015, 09:51:26 PM »
если сильно постараться, можно добавить точку  и @, 5-10мин, и всё будет готово, добавлю.

кстати в блокноте все символы работают четко

ты когда скачиваеш keys.txt с форума, ты его главное не открывай, ато блокнот может в нем чето напортачить с кодировками. у меня, если я открою keys.txt в блокноте, то перестают нажиматься русск символы.
« Last Edit: November 14, 2015, 10:01:31 PM by dramster »

security

  • Освоившийся
  • **
  • Posts: 68
    • View Profile
Re: Ввод текста
« Reply #24 on: November 14, 2015, 10:00:07 PM »
ну вот мне кажется все же какая-то специфика есть в этом эмуляторе(

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Ввод текста
« Reply #25 on: November 14, 2015, 10:14:54 PM »
ну вот попробуй такой вариант
Code: (clickermann) [Select]
//A_KEYSTRING
SUB(A_KEYSTRING, $A_str, $A_delay, $A_hwnd)
   $A_kbl=GETKBLAYOUT($A_hwnd)
   IF($A_kbl ! 1049)
      setkblayout($A_hwnd, 1049)
   END_IF
   FOR($A_nstr=1,$A_nstr<STRLEN ($A_str)+1)
      $A_l=STRCUT ($A_str, $A_nstr, 1)
      IF(ARRSIZE ($A_keys_arr) = 0)
         TFREADARR ("keys.txt", $A_keys_arr)
      END_IF
     
      IF(STRMD5($A_l) = "518ED29525738CEBDAC49C49E60EA9D3")
         $A_mess = 0x0102
         postmessage($A_hwnd,$A_mess,64,0)
         waitms($A_delay)
         print("дополнение @")
      ELSE
         IF(STRMD5($A_l) = "5058F1AF8388633F609CADB75A75DC9D")
            $A_mess = 0x0102
            postmessage($A_hwnd,$A_mess,46,0)
            waitms($A_delay)
            print("дополнение .")
         ELSE
            FOR($A_a=1,$A_a<ARRSIZE ($A_keys_arr),2)
               IF($A_keys_arr[$A_a] = $A_l)
                  $A_key = $A_keys_arr[$A_a-1]
                  IF($A_key = 46)
                     IF(STRMD5($A_l) ! "5058F1AF8388633F609CADB75A75DC9D")
                        $A_key = 48
                     END_IF
                  END_IF
                  IF((($A_key > 64)&($A_key < 91))|(($A_key > 185)&($A_key < 223)))
                     $A_mess = 0x0100
                  else
                     $A_mess = 0x0102
                  END_IF
                  IF($A_key > 0)
                     postmessage($A_hwnd,$A_mess,$A_key,0)
                     waitms($A_delay)
                  END_IF
                  $A_a=999
               END_IF
            END_CYC
           
         END_IF
      END_IF
     
     
   END_CYC
   IF($A_kbl!GETKBLAYOUT($A_hwnd))
      setkblayout($A_hwnd, $A_kbl)
   END_IF
END_SUB

$hwnd = wndfind("BlueStacks App Player")
wait(5)

A_KEYSTRING ("test@тест.ру", 5, $hwnd)

halt

опять же, keys.txt рядом с основным скриптом.




« Last Edit: November 14, 2015, 10:16:25 PM by dramster »

security

  • Освоившийся
  • **
  • Posts: 68
    • View Profile
Re: Ввод текста
« Reply #26 on: November 14, 2015, 10:37:58 PM »
Чувак, спасибо тебе большое за активную помощь, но к сожалению postmessage не работает конструкция, поэтому и символы эти не получается послать, то есть твой код в моем проекте не работает:( Придется ждать обновления и просить разработчика, чтобы добавил данные символы в поддержку к keypress

security

  • Освоившийся
  • **
  • Posts: 68
    • View Profile
Re: Ввод текста
« Reply #27 on: November 14, 2015, 10:45:17 PM »
Попробовал даже добавить в const.txt
Code: [Select]
#DOT 46
#DOG 64

К сожалению вызов keypress их не дает должного эффекта

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Ввод текста
« Reply #28 on: November 14, 2015, 10:58:08 PM »
ну и на последо еще 2 варианта, чтобы спалось хороше  :D.
Code: (clickermann) [Select]
#include "alt_winmode.cms"
 
$hwnd = wndfind("BlueStacks App Player")
$pause = 1000
 
if($hwnd = 0)
   print("BlueStasks не найден")
   halt
end_if
 
// Нажимаем на аватар
A_LCLICK(36, 100, $hwnd)
waitms($pause)
 
// Нажимаем поменять аккаунт
A_LCLICK(532, 655, $hwnd)
waitms($pause)
 
// Нажимаем ввод почты
A_LCLICK(800, 400, $hwnd)
waitms(50)
 

TOCLIP("test@тест.ру")

A_KEYDOWN (#CTRL)
WAITMS (50)
A_KEYDOWN (#V)
WAITMS (50)
A_KEYUP (#V)
A_KEYUP (#CTRL)
 
// Кликаем на пустое поле для подтверждение ввода
A_LCLICK(800, 450, $hwnd)
waitms($pause)
 
halt
есть вероятность, что в конце "test@тест.ру" допишутся еще две буковки "VV"

второй вариант
Code: (clickermann) [Select]
$hwnd = wndfind("BlueStacks App Player")
$pause = 1000
 
if($hwnd > 0)
wndgetinfo($hwnd, $x, $y, $size_x, $size_y)
hset($hwnd, 1)
else
print("BlueStasks не найден")
halt
end_if
 
// Нажимаем на аватар
LCLICK(36, 100, $hwnd)
waitms($pause)
 
// Нажимаем поменять аккаунт
LCLICK(532, 655, $hwnd)
waitms($pause)
 
// Нажимаем ввод почты
LCLICK(800, 400, $hwnd)
waitms(50)
 

TOCLIP("test@тест.ру")
SENDMESSAGE ($hwnd, 0x0302, 0, 0)
wait(1)
 
// Кликаем на пустое поле для подтверждение ввода
A_LCLICK(800, 450, $hwnd)
waitms($pause)
 
halt
больше вариантов нет

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Ввод текста
« Reply #29 on: November 14, 2015, 11:12:43 PM »
и всё же, есть подозоения, что hwnd рабочего поля BlueStacks App Player отличается от самого окна.
на всякий случай проверь этим:
Code: (clickermann) [Select]
$hwnd = wndfind("BlueStacks App Player")
$pause = 1000

if($hwnd > 0)
   wndgetinfo($hwnd, $x, $y, $size_x, $size_y)
   WNDBUMP ($hwnd)
   wait(1)
   IF(HGET(int($x+($size_x/2)),int($y+($size_y/2))) = $hwnd)
      print("все в порядке")
   else
      print("hwnd не тот")
      print("верный hwnd ", HGET(int($x+($size_x/2)),int($y+($size_y/2))))
   END_IF
   
else
   print("BlueStasks не найден")
end_if
halt
« Last Edit: November 14, 2015, 11:14:24 PM by dramster »