Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


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() .

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 03:45, 01-06-2007 | #453