DenchikK
Цитата:
как обрабатывать эти чекбоксы
|
По идее можно создавать динамический массив который будет содержать в себе все управляющие идентификаторы (ControlID) от созданных чекбоксов, и отслеживать каждый раз нужный проверяя элементы массива..
Лучше (надёжнее) проверять все чекбоксы, а нужный текст брать из самого названия чекбокса, ведь каждый зажатый чекбокс (который мы и будем проверять), имеет то название, которое и требуется для записи...
Я бы если честно предложил использовать события (Events), правда придётся немного переделать структуру всего GUI (не сильно

), для этого в начале скрипта нужно установить опции для срабатывания событии - Opt("GuiOnEventMode", 1), и потом всем (нужным для обработки) контролам присваивать функцию которая будет срабатывать на событие, так в дальнейшем легче обрабатывать элементы (имхо):
Код:

#include <GUIConstants.au3>
#include <File.au3>
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)
Opt("TrayIconDebug", 1)
Opt("SendKeyDelay", 60)
Opt("MouseCoordMode", 0)
Opt("GuiOnEventMode", 1)
Global $Array_logins, $Array_pass, $Array_links, $CheckBoxIDArray[1]
; Чтение Файла С Логинами
_FileReadToArray("logins.txt", $Array_logins)
If @error Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Чтение Файла С Паролями
_FileReadToArray("pass.txt", $Array_pass)
If @error Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Чтение Файла С Линками
_FileReadToArray("links.txt", $Array_links)
If @error Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Запуск программы
Run ('avaload.exe')
; Построение GUI
GUICreate("Автозаполнение", 330, 300)
GUISetOnEvent(-3, "Quit")
$Top = 10
$Left = 10
;Чекбоксы для логинов
If IsArray($Array_logins) Then
For $i = 1 To $Array_logins[0]
ReDim $CheckBoxIDArray[UBound($CheckBoxIDArray)+1]
$CheckBoxIDArray[UBound($CheckBoxIDArray)-1] = GUICtrlCreateCheckbox($Array_logins[$i], $Left, $Top, 180, 20)
$Top += 20
If $Top >= 200 Then
$Top = 10
$Left += 90
EndIf
Next
EndIf
;Чекбоксы для паролей
If IsArray($Array_pass) Then
For $i = 1 To $Array_pass[0]
ReDim $CheckBoxIDArray[UBound($CheckBoxIDArray)+1]
$CheckBoxIDArray[UBound($CheckBoxIDArray)-1] = GUICtrlCreateCheckbox($Array_pass[$i], $Left, $Top, 180, 20)
$Top += 20
If $Top >= 160 Then
$Top = 10
$Left += 90
EndIf
Next
EndIf
;Чекбоксы для линков
If IsArray($Array_links) Then
For $i = 1 To $Array_links[0]
ReDim $CheckBoxIDArray[UBound($CheckBoxIDArray)+1]
$CheckBoxIDArray[UBound($CheckBoxIDArray)-1] = GUICtrlCreateCheckbox($Array_links[$i], $Left, $Top, 180, 20)
$Top += 20
If $Top >= 160 Then
$Top = 10
$Left += 90
EndIf
Next
EndIf
$Start = GUICtrlCreateButton("Заполнить", 200, 10, 120, 20)
GUICtrlSetOnEvent($Start, "Start")
$Close = GUICtrlCreateButton("Выход", 200, 30, 120, 20)
GUICtrlSetOnEvent($Close, "Quit")
GUISetState()
While 1
Sleep(10)
WEnd
; Основная Работа Скрипта - функция для обработки чекбоксов
Func Start()
For $i = 1 To UBound($CheckBoxIDArray)-1
If GUICtrlRead($CheckBoxIDArray[$i]) = 1 Then
WinActivate("AvaRemoteLoad")
$CurrentText = GUICtrlRead($CheckBoxIDArray[$i], 1)
ControlSetText('AvaRemoteLoad', '', 'Edit1', $CurrentText)
ControlSetText('AvaRemoteLoad', '', 'Edit2', $CurrentText)
ControlSetText('AvaRemoteLoad', '', 'Edit3', $CurrentText)
EndIf
Next
EndFunc
Func Quit()
Exit
EndFunc
P.S
Кстати, (кажется в последних версиях AutoIt) не обязательно активировать окно для ControlSetText()

.