Что нового

[Автоматизация] Копирование из txt и ввод в логин/пароль

marmisha

Новичок
Сообщения
41
Репутация
2
Всем доброй ночи. Начал изучать Autoit 3 дня назад и решил попробывать сделать скрипт на автологин. Получилось так:

Код:
if WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
HotKeySet("{ESC}", "Terminate")
Func Terminate()
Exit 0
EndFunc
$i = 0
do
$i = $i + 1
WinWait("Lineage II","")
If Not WinActive("Lineage II","") Then WinActivate("Lineage II","")
WinWaitActive("Lineage II","")
Sleep(100)
MouseClick( "left",481,319,1,50)
Sleep(100)
MouseClick( "left",481,319,2,50)
MouseClick("left")
Send("{BacKspace}")
Sleep(200)
Send ("lexx124");Пользователь 1
MouseClick( "left",475,341,2,50)
Sleep(200)
Send ("lexx130");Пароль 1
Sleep(600)
Send("{ENTER}")
Sleep(200)
MouseClick( "left",299,87,2,50)
Sleep(200)
Send("{ENTER}{ENTER}")
Sleep(1550)
until $i = 999

Проблема состоит в том, что не могу понять, как задать параметры на выбор из файла login.txt первого логина, вписывание его в поле "логин" по координатам, выбор из файла pass.txt первого пароля и вписывание в поле "пароль" так же по координатам и переход на login2/pass2 и так далее. Как видно в моем примере вписывается только 1 логин и 1 пароль. Так же хотелось бы добавить возможность продолжать перебор с последнего логина\пароля при отключении скрипта. Прошу помочь или намекнуть на решение данной проблемы. Не судите строго, только начал изучать все возможности Autoit :smile:
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
Код:
FileReadLine ( "filehandle/filename" [, line] )


PS: пользуйся тегом AutoIT для вставки кода


Добавлено:
Сообщение автоматически объединено:

хотя эта функция очень медленная.
лучше будет прочитать файлы в массивы и вставлять данные из них
Код:
#include <file.au3>
_FileReadToArray(@ScriptDir & '\login.txt', $aLogins)
_FileReadToArray(@ScriptDir & '\pass.txt', $aPasswords)
For $i = 1 To $aLogins[0]
	WinWait("Lineage II","")
	If Not WinActive("Lineage II","") Then WinActivate("Lineage II","")
	WinWaitActive("Lineage II","")
	Sleep(100)
	MouseClick( "left",481,319,1,50)
	Sleep(100)
	MouseClick( "left",481,319,2,50)
	MouseClick("left")
	Send("{BacKspace}")
	Sleep(200)
	Send ($aLogins[$i]);Пользователь 1
	MouseClick( "left",475,341,2,50)
	Sleep(200)
	Send ($aPasswords[$i]);Пароль 1
	Sleep(600)
	Send("{ENTER}")
	Sleep(200)
	MouseClick( "left",299,87,2,50)
	Sleep(200)
	Send("{ENTER}{ENTER}")
	Sleep(1550)
Next
 
Автор
M

marmisha

Новичок
Сообщения
41
Репутация
2
Как я понял, тут
_FileReadToArray(@ScriptDir & '\login.txt', $aLogins)
_FileReadToArray(@ScriptDir & '\pass.txt', $aPasswords)
вставляю путь к файлам login.txt и pass.txt перед \, т.е.
_FileReadToArray(@ScriptDir & 'C:\Documents and Settings\ADMIN\Рабочий стол\Примеры Autoit\login.txt', $aLogins)
_FileReadToArray(@ScriptDir & 'C:\Documents and Settings\ADMIN\Рабочий стол\Примеры Autoit\pass.txt', $aPasswords)
правильно?
У меня выдает ошибку: Error: Variable used without being declared
Что я не правильно делаю? Какие значения нужно прописывать для _FileReadToArray и как прочитать файлы в массивы и вставлять данные из них?
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
marmisha [?]
У меня выдает ошибку: Error: Variable used without being declared
У вас не объявлены переменные. В сообщение об ошибке SciTe в консоле покажет, в какой строек они. Объявите их в начале скрипта с помощью:
Код:
Dim
 
Автор
M

marmisha

Новичок
Сообщения
41
Репутация
2
Ошибка и возникает во 2 строке, т.е. _FileReadToArray(@ScriptDir & 'C:\Documents and Settings\ADMIN\Рабочий стол\Примеры Autoit\login.txt', $aLogins)
Прошу показать пример объявления переменных с помощью DIM.
И еще, что означает команда: цитата из хелпа "@ScriptDir - Папка, содержащая текущий скрипт, без конечного обратного слэша."
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 320
marmisha
Код:
#include <File.au3>
#include <Array.au3>

Dim $aLogins, $aPasswords ;объявляем массивы
;читаем файл в массив
_FileReadToArray('C:\Documents and Settings\ADMIN\Рабочий стол\Примеры Autoit\login.txt', $aLogins)
_ArrayDisplay($aLogins) ; показываем то, что считали.

_FileReadToArray('C:\Documents and Settings\ADMIN\Рабочий стол\Примеры Autoit\pass.txt', $aPasswords)
_ArrayDisplay($aPasswords)
;...
MsgBox(0, "", @ScriptDir)

Если и скрипт, и файл находятся в одной папке, то путь к файлу можно указать так:
Код:
@ScriptDir & "\login.txt"
А лучше всего почитайте справку, там очень много полезной информации. Если не знаете англ. язык, читайте сначала русскую справку, но в ней много устаревшего.
 

XM

Знающий
Сообщения
70
Репутация
8
А зачем держать логины и пароли в двух разных файлах?
Можно например создать документ вида:

login=password

Затем считать его в массив, учитывая разделитель (=)


Добавлено:
Сообщение автоматически объединено:

А если этих логинов=паролей не так уж много, их и вовсе можно включить в тело скрипта, и набирать от туда же, не используя лишних функций типа
Код:
_FileReadToArray()
и пр...
 
Верх