Что нового

Связывание GUI и скрипта

marmisha

Новичок
Сообщения
41
Репутация
2
Помогите связать скрипт с кнопками. Не понимаю как кнопки привязать к действиям. Например, как при нажатии на кнопку
Код:
$Label1 = GUICtrlCreateLabel("Введите список логинов", 48, 16, 129, 17)
вызвать проводник и выбрать login.txt. Как отобразить лог введенных логин-паролей из файла check.txt. Как задать для скипта введенные координаты в поля
Код:
$Label3 = GUICtrlCreateLabel("Координаты правой стороны поля Login", 24, 160, 207, 17)
и их выполнить.
Скипт:
Код:
#RequireAdmin
#include <File.au3>
#include <Array.au3>
HotKeySet("{ESC}", "Terminate")
Global $Paused
HotKeySet("{Del}", "TogglePause")
Func TogglePause()
    $Paused = Not $Paused
    While $Paused
    WEnd
    ToolTip("")
EndFunc   ;==>TogglePause
Func Terminate()
    Exit 0
EndFunc   ;==>Terminate
Dim $aLogins, $aPasswords ;объявляем массивы
;читаем файл в массив
_FileReadToArray('login.txt', $aLogins) ;файл с логинами
_FileReadToArray('pass.txt', $aPasswords);файл с паролями
$hFile = FileOpen("check.txt", 1) ; открываем файл до начала циклов записи
If $hFile = -1 Then
    Exit
EndIf
For $i = 1 To $aLogins[0] ; цикл начинается с первого элемента и идет до последнего элемента
    WinWait("Lineage II", "") ; количество элементов в массиве при _FileReadToArray('file', $array) хранится в $array[0]
    If Not WinActive("Lineage II", "") Then WinActivate("Lineage II", "")
    WinWaitActive("Lineage II", "")
    Sleep(100)
    MouseClick("left", 600, 301, 1, 0)
    Sleep(100)
    MouseClick("left", 600, 301, 2, 0)
    MouseClick("left")
    Sleep(500)
    MouseClick("left")
    Send("{BS 20}")
    Sleep(500)
    Send($aLogins[$i]);Логин 1
    MouseClick("left", 598, 321, 2, 0)
    Sleep(600)
    MouseClick("left")
    Send("{BS 20}")
    Send($aPasswords[$i]);Пароль 1
    Send("{ENTER}")
    Sleep(4000)
    Send("{ENTER}"); подтверждение соглашения
    Sleep(1000)
    Send("{ENTER}")
    ToolTip($i & ":" & $aLogins[$i] & "," & $aPasswords[$i], 1050, 0)
    Sleep(1000)
    FileWriteLine($hFile, $aLogins[$i] & ":" & $aPasswords[$i])
    Sleep(6000)
	MouseMove(940, 530, 0)
    MouseClick("left")
	Sleep(100)
	MouseMove(635, 360, 0)
    MouseClick("left")
Next
FileClose($hFile) ; после всех циклов записи закрываем файл
Графическая часть:
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=D:\разное\Языки программирования\Autoit\koda_1.7.3.0\Forms\Автологин графика.kxf
$Form1 = GUICreate("Автологин Lineage2", 648, 339, 183, 114)
GUICtrlCreateInput("", 24, 40, 185, 21)
$Label1 = GUICtrlCreateLabel("Введите список логинов", 48, 16, 129, 17)
$Button1 = GUICtrlCreateButton("Логины", 216, 40, 49, 25)
GUICtrlCreateInput("", 25, 105, 185, 21)
$Label2 = GUICtrlCreateLabel("Введите список паролей", 49, 81, 130, 17)
$Button2 = GUICtrlCreateButton("Пароли", 217, 105, 49, 25)
$Label3 = GUICtrlCreateLabel("Координаты правой стороны поля Login", 24, 160, 207, 17)
GUICtrlCreateInput("", 40, 200, 49, 21)
GUICtrlCreateInput("", 168, 200, 49, 21)
$Label4 = GUICtrlCreateLabel("Координаты правой стороны поля Password", 23, 248, 227, 17)
GUICtrlCreateInput("", 39, 288, 49, 21)
GUICtrlCreateInput("", 167, 288, 49, 21)
$Label5 = GUICtrlCreateLabel("Введенные логины-пароли", 376, 8, 140, 17)
GUICtrlCreateEdit("", 304, 40, 305, 273)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
622
marmisha [?]
Не понимаю как кнопки привязать к действиям
так ведь в справке все расписано, в той же
Код:
GUICtrlCreateButton

у тебя кстати приведены не кнопки, а надписи
 
Автор
M

marmisha

Новичок
Сообщения
41
Репутация
2
В справке как-то заумно все, объясните проще, как при нажатии
Код:
$Button1 = GUICtrlCreateButton
произвести выбор .тхт файла?
 

VladUs

Скриптер
Сообщения
621
Репутация
181
Для примера вот так :
Код:
#include <GUIConstants.au3>

GUICreate("My GUI") 
$Button = GUICtrlCreateButton ("Выберите файл",  10, 30, 150,40)
GUISetState ()       

While 1
$msg = GUIGetMsg()
Select 
  Case $msg = $Button 
      $sFile = FileOpenDialog("Выберите файл","C:\","Текстовый файл (*.txt)")
  Case $msg = $GUI_EVENT_CLOSE 
      ExitLoop
  EndSelect
WEnd
 

VladUs

Скриптер
Сообщения
621
Репутация
181
Для примера можно открыть выбранный файл:

Код:
#include <GUIConstants.au3>

GUICreate("My GUI") 
$Button = GUICtrlCreateButton ("Выберите файл",  10, 30, 150,40)
GUISetState ()       

While 1
$msg = GUIGetMsg()
Select 
  Case $msg = $Button 
      $sFile = FileOpenDialog("Выберите файл","C:\","Текстовый файл (*.txt)")
      ShellExecute($sFile) 
  Case $msg = $GUI_EVENT_CLOSE 
      ExitLoop
  EndSelect
WEnd
 
Автор
M

marmisha

Новичок
Сообщения
41
Репутация
2
Вы опережаете мои мысли, только начал смотреть, как открыть файл :smile:. А как заставить .тхт файл показать свое содержимое в графическом окне?
И еще, почему-то при нажатии на кнопку "Логины" окно выбора файла появляется, а при нажатии на кнопку "Пароли" ничего не происходит. :-\
Код:
While 1
$msg = GUIGetMsg()
Select
  Case $msg = $Button1
     FileOpenDialog("Логины","C:\","Текстовый файл (*.txt)")
  Case $msg = $GUI_EVENT_CLOSE
      ExitLoop
  EndSelect
  WEnd
  While 2
$msg1 = GUIGetMsg()
Select
  Case $msg1 = $Button2
     FileOpenDialog("Пароли","C:\","Текстовый файл (*.txt)")
  Case $msg1 = $GUI_EVENT_CLOSE
      ExitLoop
  EndSelect
WEnd
 

VladUs

Скриптер
Сообщения
621
Репутация
181
marmisha [?]
А как заставить .тхт файл показать свое содержимое в графическом окне?
Код:
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>

$gui = GUICreate("My GUI") 
$Button = GUICtrlCreateButton ("Выберите файл",  10, 30, 150,40)
$input = GUICtrlCreateInput ("", 30,  100, 300, 250,BitOr($GUI_SS_DEFAULT_INPUT, $ES_MULTILINE))
GUISetState ()       

While 1
$msg = GUIGetMsg()
Select 
Case $msg = $Button 
   $sFile  =  FileOpenDialog("Выберите файл","C:\","Текстовый файл (*.txt)")
   $file = FileOpen($sFile)
   $fileread = FileRead($file)
   GUICtrlSetData ( $input, $fileread )
   FileClose($file)
Case $msg = $GUI_EVENT_CLOSE 
   ExitLoop
EndSelect
   
WEnd
 
Автор
M

marmisha

Новичок
Сообщения
41
Репутация
2
Что-то начало получаться, только почему-то после выбора тхт файлов с логинами и паролями скрипт не идет дальше, подскажите в чем проблема и как присвоить окошкам с координатами введенные в них цифры?
Код:
#RequireAdmin
#include <File.au3>
#include <Array.au3>
; Задаем горячии клавиши
HotKeySet("{F1}", "Terminate")
Global $Paused
HotKeySet("{Del}", "TogglePause")
Func TogglePause()
    $Paused = Not $Paused
    While $Paused
    WEnd
    ToolTip("")
EndFunc   ; Пауза
Func Terminate()
    Exit 0
EndFunc   ;Выход из скрипта
; Создаем графическую оболочку
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=d:\разное\Языки программирования\autoit\koda_1.7.3.0\forms\Автологин графика.kxf
$Form1_1 = GUICreate("Автологин Lineage2", 648, 339, 183, 114)
$Label1 = GUICtrlCreateLabel("Введите список логинов", 48, 16, 129, 17)
$Login = GUICtrlCreateButton("Логины", 88, 40, 49, 25)
$Label2 = GUICtrlCreateLabel("Введите список паролей", 49, 81, 130, 17)
$Pass = GUICtrlCreateButton("Пароли", 89, 113, 49, 25)
$Label3 = GUICtrlCreateLabel("Координаты правой стороны поля Login", 24, 160, 207, 17)
$X = GUICtrlCreateInput("", 40, 200, 49, 21, BitOr($GUI_SS_DEFAULT_INPUT, $ES_MULTILINE))
$Y = GUICtrlCreateInput("", 168, 200, 49, 21, BitOr($GUI_SS_DEFAULT_INPUT, $ES_MULTILINE))
$Label4 = GUICtrlCreateLabel("Координаты правой стороны поля Password", 23, 248, 227, 17)
$Label5 = GUICtrlCreateLabel("Введенные логины-пароли", 376, 8, 140, 17)
$LoginPass = GUICtrlCreateEdit("", 304, 40, 305, 273, BitOr($GUI_SS_DEFAULT_INPUT, $ES_MULTILINE))
$Label6 = GUICtrlCreateLabel("X=", 20, 203, 17, 17)
$Label8 = GUICtrlCreateLabel("Y=", 148, 203, 17, 17)
$X1 = GUICtrlCreateInput("", 40, 283, 49, 21, BitOr($GUI_SS_DEFAULT_INPUT, $ES_MULTILINE))
$Y1 = GUICtrlCreateInput("", 168, 283, 49, 21, BitOr($GUI_SS_DEFAULT_INPUT, $ES_MULTILINE))
$Label7 = GUICtrlCreateLabel("X1=", 20, 286, 23, 17)
$Label9 = GUICtrlCreateLabel("Y1=", 148, 286, 23, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$msg = GUIGetMsg()
Select
Case $msg = $Login
$aLogins  =  FileOpenDialog("Выберите файл","C:\","Текстовый файл (*.txt)")
_FileReadToArray('login.txt', $aLogins) ;файл с логинами
Case $msg = $Pass
$aPasswords =  FileOpenDialog("Выберите файл","C:\","Текстовый файл (*.txt)")
_FileReadToArray('pass.txt', $aPasswords);файл с паролями
Case $msg = $GUI_EVENT_CLOSE
   ExitLoop
EndSelect
WEnd
Dim $aLogins, $aPasswords ;объявляем массивы
;читаем файл в массив

$hFile = FileOpen("check.txt", 1) ; открываем файл до начала циклов записи
If $hFile = -1 Then
    Exit
EndIf
For $i = 1 To $aLogins[0] ; цикл начинается с первого элемента и идет до последнего элемента
    WinWait("Lineage II", "") ; количество элементов в массиве при _FileReadToArray('file', $array) хранится в $array[0]
    If Not WinActive("Lineage II", "") Then WinActivate("Lineage II", "")
    WinWaitActive("Lineage II", "")
    Sleep(100)
    MouseClick("left", 600, 301, 1, 0)
    Sleep(100)
    MouseClick("left", 600, 301, 2, 0)
    MouseClick("left")
    Sleep(500)
    MouseClick("left")
    Send("{BS 20}")
    Sleep(500)
    Send($aLogins[$i]);Логин 1
    MouseClick("left", 598, 321, 2, 0)
    Sleep(600)
    MouseClick("left")
    Send("{BS 20}")
    Send($aPasswords[$i]);Пароль 1
    Send("{ENTER}")
    Sleep(4000)
    Send("{ENTER}"); подтверждение соглашения
    Sleep(1000)
    Send("{ENTER}")
    ToolTip($i & ":" & $aLogins[$i] & "," & $aPasswords[$i], 1050, 0)
    Sleep(1000)
    FileWriteLine($hFile, $aLogins[$i] & ":" & $aPasswords[$i])
    Sleep(6000)
	MouseMove(940, 530, 0)
    MouseClick("left")
	Sleep(100)
	MouseMove(635, 360, 0)
    MouseClick("left")
Next
FileClose($hFile) ; после всех циклов записи закрываем файл
 

joiner

Модератор
Локальный модератор
Сообщения
3,408
Репутация
597
marmisha
ты хочешь из открываемого файла вставить пароль или логин в GUICtrlCreateEdit ?
я сделал так
Код:
Case $msg = $Login
$aLogins  =  FileOpenDialog("Выберите файл","C:\","Текстовый файл (*.txt)")
$1 = FileRead($aLogins)
GUICtrlSetData ($LoginPass,$1)

marmisha [?]
как присвоить окошкам с координатами введенные в них цифры?
тут не пойму что нужно? чтобы были постоянные цифры при запуске или чтобы вводились из файла?
 
Автор
M

marmisha

Новичок
Сообщения
41
Репутация
2
тут не пойму что нужно? чтобы были постоянные цифры при запуске или чтобы вводились из файла?
В основном окне есть 4 окошка для ввода координат (Х, Y, Х1,Y1). По этим координатам будет производится кликанье мышкой. Примерно так:
Код:
MouseClick("left", X, Y, 2, 0)
 

joiner

Модератор
Локальный модератор
Сообщения
3,408
Репутация
597
marmisha
ты хочешь чтобы при запуске скрипта в окошках уже были координаты или при выборе определенного пароля появлялись координаты?
если первое то так
Код:
$X = GUICtrlCreateInput("1", 40, 200, 49, 21, BitOr($GUI_SS_DEFAULT_INPUT, $ES_MULTILINE))

если второе, то смотри справку по IniWriteSection , IniReadSection
 
Автор
M

marmisha

Новичок
Сообщения
41
Репутация
2
Опишу задуманные действия скрипта:
выглядит вот так
16.04_1.jpg

"Логины"-список логинов (.тхт) построчно
"Пароли"-список паролей (.тхт) построчно
Координаты правой стороны поля Login X, Y (эти данные вписываем мы сами)
Координаты правой стороны поля Password X1, Y1 (эти данные вписываем мы сами)
"Веденные логин-пароль" - отображаются введенные логин-пароль через ":" из списков "Логины" "Пароли".
Часть скрипта с момента
Код:
$hFile = FileOpen("check.txt", 1) ; открываем файл до начала циклов записи
If $hFile = -1 Then
    Exit
EndIf
For $i = 1 To $aLogins[0] ; цикл начинается с первого элемента и идет до последнего элемента
    WinWait("Lineage II", "") ; количество элементов в массиве при _FileReadToArray('file', $array) хранится в $array[0]
    If Not WinActive("Lineage II", "") Then WinActivate("Lineage II", "")
    WinWaitActive("Lineage II", "")
    Sleep(100)
    MouseClick("left", 600, 301, 1, 0)
    Sleep(100)
    MouseClick("left", 600, 301, 2, 0)
    MouseClick("left")
    Sleep(500)
    MouseClick("left")
    Send("{BS 20}")
    Sleep(500)
    Send($aLogins[$i]);Логин 1
    MouseClick("left", 598, 321, 2, 0)
    Sleep(600)
    MouseClick("left")
    Send("{BS 20}")
    Send($aPasswords[$i]);Пароль 1
    Send("{ENTER}")
    Sleep(4000)
    Send("{ENTER}"); подтверждение соглашения
    Sleep(1000)
    Send("{ENTER}")
    ToolTip($i & ":" & $aLogins[$i] & "," & $aPasswords[$i], 1050, 0)
    Sleep(1000)
    FileWriteLine($hFile, $aLogins[$i] & ":" & $aPasswords[$i])
    Sleep(6000)
	MouseMove(940, 530, 0)
    MouseClick("left")
	Sleep(100)
	MouseMove(635, 360, 0)
    MouseClick("left")
Next
FileClose($hFile) ; после всех циклов записи закрываем файл
рабочая 100%.
 

joiner

Модератор
Локальный модератор
Сообщения
3,408
Репутация
597
marmisha ты уж извини, но мне до сих пор не понятно для чего тебе этот скрипт. что он должен делать от первой до последней точки
зачем в нем запись событий в файл? записывает он из окон координат и поля пароль-логин или для чего эти поля? ну и так далее. по пунктам
 
Автор
M

marmisha

Новичок
Сообщения
41
Репутация
2
marmisha ты уж извини, но мне до сих пор не понятно для чего тебе этот скрипт. что он должен делать от первой до последней точки
зачем в нем запись событий в файл? записывает он из окон координат и поля пароль-логин или для чего эти поля? ну и так далее. по пунктам
С помощью данного скрипта производится автоматический ввод логина-пароля в поля главного окна онлайн игры. Сам скрипт готов и работает, но без графической оболочки. Если какие-то данные нужно изменить, приходиться открывать скрипт и менять все руками. Графическая оболочка позволит вводить данные без вмешательства в скрипт, тем более после компиляции в .ехе это будет не возможно. Да и красивее будет :D
Запись событий в файл нужно для отслеживания введенных логин-паролей, при открытии данного файла можно посмотреть какие пароли-логины вводились.
 
Верх