AutoIt: 3.3.8.1
Версия: 1.0
Категория: Автоматизация
Описание: Программа была написана мной для автоматического добавления объявлений на сайт авито.ру в далеком 2015 году. Сейчас уже не актуальна. В свое время хорошо поработала, было даже прикручено автоматическое распознавание капчи с помощью capcap. Вероятность успешного распознавания была 50%.
Сейчас наткнулся на нее на компе, решил выложить просто в копилку знаний. Может кому-то пригодится код. Можете свободно брать и использовать любые фрагменты кода.
Код/Пример:
Файл: Avito_project.zip
На всякий случай отдельно выкладываю все инклуды:
Includes.zip
Снимок:

Источник: autoit-script.ru
Автор: valldar
Версия: 1.0
Категория: Автоматизация
Описание: Программа была написана мной для автоматического добавления объявлений на сайт авито.ру в далеком 2015 году. Сейчас уже не актуальна. В свое время хорошо поработала, было даже прикручено автоматическое распознавание капчи с помощью capcap. Вероятность успешного распознавания была 50%.
Сейчас наткнулся на нее на компе, решил выложить просто в копилку знаний. Может кому-то пригодится код. Можете свободно брать и использовать любые фрагменты кода.
Код/Пример:
Здесь только часть кода, полный файл скачивайте ниже по ссылке.
Код:
#include <WinHttp.au3>
#include <array.au3>
#include <file.au3>
#include <String.au3>
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#include <GuiComboBox.au3>
#include <GuiTreeView.au3>
#include <WinAPI.au3>
#include <ListViewConstants.au3>
#include <GuiListView.au3>
#include <Encoding.au3>
#include <GuiEdit.au3>
#include <Date.au3>
#include <Process.au3>
#include <ScrollBarConstants.au3>
HotKeySet('{F10}', '_quit')
Func _quit()
Exit
EndFunc ;==>_quit
Dim $id, $name
Global $parent, $child, $pressed = False, $child_text, $6
Global $form1, $Button1, $hConnect, $hOpen, $clicked = 0, $edit1, $Label1
Global $form2, $Input21, $button21, $button22, $input22
Global $form3, $button31, $button32, $button33, $Edit31, $Edit32, $Edit33, $Input33, $Input32, $Input31, $Label31, _
$TreeView31, $Checkbox31, $tree, $Button34, $Button35, $advEditKey, $pic[5]
Global $form4, $combo4, $button41, $subctg_ids, $subctg_selectedid, $comboSelectedText, $aSubComboIndexes, $ubound, $aSubctg_selectedids, $sSubctg_names1, $aSubctg_ids, $aParams
Global $form5, $Button51, $Input51, $captch, $hConnect, $hOpen, $header3, $success = 0, $goodCaptcha = 0, $badCaptcha = 0
#region ### START Koda GUI section ### Form=c:\koda_1.7.3.0\forms\main.kxf
DirGetSize(@ScriptDir & '\ads')
If @error = 1 Then
DirCreate(@ScriptDir & '\ads')
EndIf
$form1 = GUICreate("Avito Manager", 723, 375, 191, 131)
;$List1 = GUICtrlCreateListView("", 16, 40, 185, 188, BitOR($LVS_LIST,$LVS_SHOWSELALWAYS,$LVS_SINGLESEL)) ; accounts
$List1 = GUICtrlCreateList("", 16, 40, 185, 188, $LBS_EXTENDEDSEL) ; accounts
GUICtrlSetTip(-1, "Список ваших аккаунтов")
$acounts = IniReadSection(@ScriptDir & '\ads\adsIndex.Ini', 'Accounts')
If IsArray($acounts) Then
For $g = 1 To $acounts[0][0]
_GUICtrlListBox_AddString($List1, $acounts[$g][0] & ';' & $acounts[$g][1])
Next
Else
EndIf
$List2 = GUICtrlCreateList("", 232, 40, 313, 188)
GUICtrlSetTip(-1, "Список ваших объявлений")
_advRead(1, 0, 0, 0, 0)
_FileReadToArray(@ScriptDir & '\Ids.Txt', $name)
_ArrayDelete($name, 0)
$6 = _ArrayToString($name)
$7 = StringRegExp($6, '(?is)\|?(.*?);.{24}', 3)
$8 = _ArrayToString($7)
$Combo1 = GUICtrlCreateCombo('Выбрать город', 568, 40, 137, 25, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL))
GUICtrlSetData($Combo1, $8)
$Group1 = GUICtrlCreateGroup("Информация о выбранном аккаунте", 8, 280, 201, 81)
$Button6 = GUICtrlCreateButton("Активные", 16, 312, 83, 25)
$Button7 = GUICtrlCreateButton("Завершенные", 112, 312, 83, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("+", 32, 232, 75, 25) ; add account
$Button2 = GUICtrlCreateButton("-", 112, 232, 75, 25) ; del account
$Button3 = GUICtrlCreateButton("+", 240, 232, 59, 25) ; ads add new
$Button4 = GUICtrlCreateButton("-", 304, 232, 59, 25) ; ads del
$Button5 = GUICtrlCreateButton("Редактировать", 368, 232, 91, 25)
$Button13 = GUICtrlCreateButton("Копировать", 464, 232, 75, 25)
$Group2 = GUICtrlCreateGroup("Ваши аккаунты:", 8, 16, 201, 257)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("Ваши объявления:", 216, 16, 337, 257)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group4 = GUICtrlCreateGroup("Выбрать город:", 560, 16, 153, 209)
$List3 = GUICtrlCreateList("", 568, 96, 137, 123)
GUICtrlSetTip(-1, "Вы можете добавить до 10 городов")
$cities = IniReadSection(@ScriptDir & '\ads\adsIndex.Ini', 'Cities')
If IsArray($cities) Then
For $s = 1 To $cities[0][0]
_GUICtrlListBox_AddString($List3, $cities[$s][0])
Next
Else
EndIf
$Button11 = GUICtrlCreateButton("+", 568, 64, 43, 25)
GUICtrlSetTip(-1, "Добавить выбранный город в список")
$Button12 = GUICtrlCreateButton("-", 616, 64, 43, 25)
GUICtrlSetTip(-1, "Удалить выбранные города из списка")
$Label1 = GUICtrlCreateLabel(_GUICtrlListBox_GetCount($List3), 672, 72, 28, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button8 = GUICtrlCreateButton("Начать", 600, 280, 75, 25)
$Button9 = GUICtrlCreateButton("О программе", 600, 320, 75, 25)
$Group5 = GUICtrlCreateGroup("Лог", 216, 280, 337, 81)
$edit1 = GUICtrlCreateEdit(_NowDate() & ' ' & _NowTime() & " Начало работы" & @CRLF, 224, 296, 321, 57)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button10 = GUICtrlCreateButton("Опции", 600, 240, 75, 25)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg
Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
If Not IsHWnd($List1) Then $hWndListBox = GUICtrlGetHandle($List1)
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; младшее слово
$iCode = BitShift($iwParam, 16) ; старшее слово
Switch $hWndFrom
Case $List1, $hWndListBox
Switch $iCode
Case $LBN_SELCHANGE
$clicked = 1
;ConsoleWrite('clicked!'&@Lf)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND
#endregion ### END Koda GUI section ###
While 1
$aMsg = GUIGetMsg(1)
Switch $aMsg[1]
Case $form1 ; from1 main begin
GUISwitch($form1)
Switch $aMsg[0]
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
If WinExists('Form2') Then
Else
_Form2addAccount()
EndIf
Case $Button2
$11 = StringRegExp(_GUICtrlListBox_GetText($List1, _GUICtrlListBox_GetCurSel($List1)), '(?si)(.*?);', 1)
;MsgBox(0,'',$11[0])
If @error <> 0 Or $clicked = 0 Then
Else
IniDelete(@ScriptDir & '\ads\adsIndex.Ini', 'Accounts', $11[0])
_GUICtrlListBox_DeleteString($List1, _GUICtrlListBox_GetCurSel($List1))
EndIf
Case $Button3
If WinExists('Добавить/Редактировать объявление') Then
Else
_Form3addItem(0, '', '', '', '', '', '')
EndIf
Case $Button4
$DELadvStringToEdit = _GUICtrlListBox_GetCurSel($List2)
$DELadvSelectedTitle = _GUICtrlListBox_GetText($List2, $DELadvStringToEdit)
$DELadvTitleIndex = StringRegExp($DELadvSelectedTitle, '(?si)\[([0-9]*?)\]', 1)
IniDelete(@ScriptDir & '\ads\adsIndex.Ini', $DELadvTitleIndex[0])
FileDelete(@ScriptDir & '\ads\adv' & $DELadvTitleIndex[0] & '.Txt')
_GUICtrlListBox_DeleteString($List2, _GUICtrlListBox_GetCurSel($List2))
Case $Button5
If _GUICtrlListBox_GetCurSel($List2) = -1 Then
Else
If WinExists('Добавить/Редактировать объявление') Then
Else
$advStringToEdit = _GUICtrlListBox_GetCurSel($List2)
_advRead(0, 1, $advStringToEdit, 0, 0)
EndIf
EndIf
Case $Button11
If GUICtrlRead($Combo1) = 'Выбрать город' Then
Else
If _GUICtrlListBox_GetCount($List3) < 24 Then
$7 = StringRegExp($6, '(?is)\|?' & GUICtrlRead($Combo1) & ';(.{24})\|?', 1)
IniWrite(@ScriptDir & '\ads\adsIndex.Ini', 'Cities', GUICtrlRead($Combo1), _StringEncrypt(0, $7[0], 'id'))
_GUICtrlListBox_AddString($List3, GUICtrlRead($Combo1))
GUICtrlSetData($Label1, _GUICtrlListBox_GetCount($List3))
Else
EndIf
EndIf
Case $Button12
$12 = _GUICtrlListBox_GetText($List3, _GUICtrlListBox_GetCurSel($List3))
IniDelete(@ScriptDir & '\ads\adsIndex.Ini', 'Cities', $12)
_GUICtrlListBox_DeleteString($List3, _GUICtrlListBox_GetCurSel($List3))
#region Button8 Start
Case $Button8
$advStringToEdit = _GUICtrlListBox_GetCurSel($List2)
_advRead(0, 0, $advStringToEdit, 1, 0)
#endregion Button8 Start
#region Button13 Copy
Case $Button13
If _GUICtrlListBox_GetCurSel($List2) = -1 Then
Else
$advStringToCopy = _GUICtrlListBox_GetCurSel($List2)
_advCopy($advStringToCopy)
EndIf
#endregion Button13 Copy
EndSwitch
Case $form2 ; from2 addAccount begin
If _WinAPI_IsWindowVisible($form2) = True Then
GUISwitch($form2)
Switch $aMsg[0]
Case $GUI_EVENT_CLOSE
GUIDelete($form2)
Case $button21
_GUICtrlListBox_AddString($List1, GUICtrlRead($Input21) & ';' & GUICtrlRead($input22))
;$email_pass=StringSplit()
IniWrite(@ScriptDir & '\ads\adsIndex.Ini', 'Accounts', GUICtrlRead($Input21), GUICtrlRead($input22))
Case $button22
GUIDelete($form2)
EndSwitch
Else
EndIf
Case $form3 ; from3 additem begin
If _WinAPI_IsWindowVisible($form3) = True Then
GUISwitch($form3)
Switch $aMsg[0]
Case $GUI_EVENT_CLOSE
GUIDelete($form3)
$pressed = False
Case $button31
$functionCompleted = 0
If $advEditKey = 0 Then
_advWrite(0)
Else
_advWrite(1)
EndIf
If $functionCompleted = 1 Then
GUIDelete($form3)
EndIf
Case $Button34
If WinExists('Выбор подкатегории') Then
Else
$pressed = True
$child_index = _GUICtrlTreeView_Index($TreeView31, _GUICtrlTreeView_GetSelection($TreeView31))
$parent_index = _GUICtrlTreeView_Index($TreeView31, _GUICtrlTreeView_GetParentHandle($TreeView31, _GUICtrlTreeView_GetSelection($TreeView31)))
_treeAdd($parent_index, $child_index)
_chooseCategoryForm4($child_index, $parent_index)
EndIf
Case $button33
If $PicNum >= 5 Then
MsgBox(64, 'Ошибка', 'Не более 5 изображений')
Else
_picset(0, 0)
EndIf
Case $Button35
_picset(1, 0)
Case $button32
GUIDelete($form3)
$pressed = False
EndSwitch
Else
EndIf
Case $form4 ; form4 choose subcategory begin
If _WinAPI_IsWindowVisible($form4) = True Then
GUISwitch($form4)
Switch $aMsg[0]
Case $GUI_EVENT_CLOSE
GUIDelete($form4)
Case $combo4[1]
If $ubound > 1 Then
If _GUICtrlComboBox_GetCurSel($combo4[1]) = $aSubComboIndexes[2] Then
GUICtrlSetData($combo4[2], $sSubctg_names1[2])
Else
GUICtrlSetData($combo4[2], '')
EndIf
EndIf
Case $button41 ; "ГОТОВО"
;If $UBound>1 Then
Dim $aSubctg_selectedids[1]
For $i = 1 To $ubound
$comboIndex = _GUICtrlComboBox_GetCurSel($combo4[$i]) - 1
If $comboIndex >= 0 Then
$aSubctg_id = $aSubctg_ids[$i]
;_ArrayDisplay($aParams)
;_ArrayDisplay($aSubctg_id)
$sSubctg_selectedid = $aSubctg_id[$comboIndex]
_ArrayAdd($aSubctg_selectedids, $sSubctg_selectedid)
EndIf
Next
;_ArrayDisplay($aSubctg_selectedids)
GUIDelete($form4)
EndSwitch
EndIf
EndSwitch
WEnd
Func _Form2addAccount()
#region ### START Koda GUI section ### Form=c:\koda_1.7.3.0\forms\addaccount.kxf
$form2 = GUICreate("Form2", 331, 133 + 60, 264, 207, Default, Default, $form1)
$Input21 = GUICtrlCreateInput("", 32, 40, 273, 21)
$Group21 = GUICtrlCreateGroup("Введите e-mail или логин", 16, 16, 297, 65)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$input22 = GUICtrlCreateInput("", 32, 40 + 60, 273, 21)
$Group22 = GUICtrlCreateGroup("Введите пароль", 16, 16 + 60, 297, 65)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$button21 = GUICtrlCreateButton("Добавить", 152, 96 + 60, 75, 25)
$button22 = GUICtrlCreateButton("Закрыть", 240, 96 + 60, 75, 25)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
EndFunc ;==>_Form2addAccount
Func _Form3addItem($checkbox3, $phone3, $title3, $category3, $description3, $price3, $images3)
If $images3 = '' Or $images3 = 'No Image' Then
Global $PicNum = 0, $imgArr[1]
Else
Global $imgArr = StringSplit($images3, '|')
Global $PicNum = $imgArr[0]
EndIf
If $title3 = '' Then
$advEditKey = 0
Else
$advEditKey = 1
EndIf
#region ### START Koda GUI section ### Form=c:\koda_1.7.3.0\forms\additem.kxf
$form3 = GUICreate("Добавить/Редактировать объявление", 662, 517, 195, 117, Default, Default, $form1)
$Checkbox31 = GUICtrlCreateCheckbox("Я не хочу получать вопросы от покупателей по e-mail", 8, 8, 297, 17)
If $checkbox3 = 0 Then
GUICtrlSetState($Checkbox31, $GUI_UNCHECKED)
Else
GUICtrlSetState($Checkbox31, $GUI_CHECKED)
EndIf
$Input31 = GUICtrlCreateInput("", 16, 48, 145, 21, $ES_NUMBER)
GUICtrlSetTip(-1, 'Необязательный пункт' & @CRLF & 'Формат должен быть: 89123456789')
If $phone3 = 0 Then
Else
GUICtrlSetData($Input31, $phone3)
EndIf
$button31 = GUICtrlCreateButton("Готово", 576, 416, 75, 25)
$button32 = GUICtrlCreateButton("Закрыть", 576, 464, 75, 25)
$Input33 = GUICtrlCreateInput("", 184, 48, 457, 21)
GUICtrlSetLimit(-1, 50)
GUICtrlSetData($Input33, $title3)
$Edit31 = GUICtrlCreateEdit("", 184, 96, 457, 281)
GUICtrlSetData($Edit31, StringReplace($description3, '|', @CRLF))
$Group1 = GUICtrlCreateGroup("Номер телефона", 8, 32, 161, 41)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Категория", 8, 80, 161, 257)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("Название", 176, 32, 473, 41)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group4 = GUICtrlCreateGroup("Описание", 176, 80, 473, 305)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group5 = GUICtrlCreateGroup("Цена/зарплата", 8, 344, 161, 41)
$Input32 = GUICtrlCreateInput("", 16, 360, 145, 21)
GUICtrlSetData($Input32, $price3)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group6 = GUICtrlCreateGroup("Фотографии", 8, 392, 561, 113)
GUICtrlCreateGroup("", -99, -99, 1, 1)
If $advEditKey = 1 Then
_picset(2, 1)
EndIf
$Button34 = GUICtrlCreateButton("Далее", 48, 304, 75, 25)
$TreeView31 = GUICtrlCreateTreeView(16, 96, 145, 201, BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)
GUICtrlSetTip(-1, 'Выберите подпункт и' & @CRLF & 'нажмите "Далее"')
_treeAdd(False, False)
$button33 = GUICtrlCreateButton("Обзор...", 480, 416, 75, 25)
$Button35 = GUICtrlCreateButton("Очистить", 480, 464, 75, 25)
If $category3 = '' Then
Else
;$03 = StringRegExp($category3, '(?si)(.*?)\|[0-9]+?\|', 1)
;$13 = StringRegExp($category3, '(?si)[аА-яЯ]+?\|[0-9]+?\|(.*?)\|[0-9]+?\|?', 1)
; _GUICtrlTreeView_SelectItem($TreeView31, _GUICtrlTreeView_FindItem($TreeView31, $03[0]))
; _GUICtrlComboBox_SetCurSel($combo41, $comboSelectedText)
EndIf
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
EndFunc ;==>_Form3addItem
Func _advWrite($advEditing)
Dim $sections[7] = ['emailme', 'phone', 'Title', 'category', 'Description', 'price', 'Images']
Dim $values[1]
If GUICtrlRead($Checkbox31) = $GUI_CHECKED Then ; уведомление по имайл
_ArrayAdd($values, 1)
Else
_ArrayAdd($values, 0)
EndIf
$phone = GUICtrlRead($Input31) ; телефон
If StringRegExp($phone, '([0-9]{11})', 0) = 1 Then
_ArrayAdd($values, $phone)
Else
If GUICtrlRead($Input31) = '' Then
_ArrayAdd($values, 0)
Else
MsgBox(0, 'Ошибка', 'Формат номера должен быть 8ххххххххх (11 знаков)')
Return
EndIf
EndIf
$title = GUICtrlRead($Input33) ; тайтл
If $title = '' Then
MsgBox(0, 'Ошибка', 'Вы не ввели название объявления')
Return
Else
_ArrayAdd($values, GUICtrlRead($Input33))
EndIf
If $pressed = True Then ; категория
$localString = $child_text & '|' & 'ctg=' & $child
For $i5 = 1 To $ubound
$localString &= '|' & 'param' & $i5 & '=' & $aParams[$i5] & '|' & 'subctg' & $i5 & '=' & $aSubctg_selectedids[$i5]
Next
;ConsoleWrite($localString&@LF)
_ArrayAdd($values, $localString)
Else
MsgBox(0, 'Ошибка', 'Вы не выбрали подкатегорию' & @CRLF & 'Нажмите кнопку "Далее" и выберите подкатегорию')
Return
EndIf
If GUICtrlRead($Edit31) = '' Then ; описание
MsgBox(0, 'Ошибка', 'Вы не ввели описание объявления')
Return
Else
_ArrayAdd($values, StringReplace(GUICtrlRead($Edit31), @CRLF, '|'))
EndIf
If GUICtrlRead($Input32) = '' Then ; цена
MsgBox(0, 'Ошибка', 'Вы не ввели цену/зарплату')
Return
Else
_ArrayAdd($values, GUICtrlRead($Input32))
EndIf
If UBound($imgArr) < 2 Then
$imgStr = 'No Image'
Else
$imgStr = $imgArr[1] ; картинки
For $i = 2 To UBound($imgArr) - 1
$imgStr &= '|' & $imgArr[$i]
Next
EndIf
_ArrayAdd($values, $imgStr)
_ArrayDelete($values, 0)
;_ArrayDisplay($values)
$advIndex = IniReadSectionNames(@ScriptDir & '\ads\adsIndex.Ini')
If @error Then
$advLast = 0
Else
$advLast = _ArrayMax($advIndex, 1)
EndIf
Select
Case $advEditing = 0
_FileWriteFromArray(@ScriptDir & '\ads\adv' & $advLast + 1 & '.Txt', $values)
IniWrite(@ScriptDir & '\ads\adsIndex.Ini', $advLast + 1, 'Title', $title)
_GUICtrlListBox_AddString($List2, $title & ' [' & $advLast + 1 & ']')
$functionCompleted = 1
Return
Case $advEditing = 1
$advStringToEdit = _GUICtrlListBox_GetCurSel($List2)
$advSelectedTitle = _GUICtrlListBox_GetText($List2, $advStringToEdit)
$advTitleIndex = StringRegExp($advSelectedTitle, '(?si)\[([0-9]*?)\]', 1)
IniWrite(@ScriptDir & '\ads\adsIndex.Ini', $advTitleIndex[0], 'Title', $title)
_FileWriteFromArray(@ScriptDir & '\ads\adv' & $advTitleIndex[0] & '.Txt', $values)
_GUICtrlListBox_ReplaceString($List2, $advStringToEdit, $title & ' [' & $advTitleIndex[0] & ']')
$functionCompleted = 1
Return
EndSelect
$pressed = False
$functionCompleted = 1
Return
EndFunc ;==>_advWrite
Func _advRead($advRead, $advEdit, $advStringToEdit, $advSend, $advCopy)
$advIndex = IniReadSectionNames(@ScriptDir & '\ads\adsIndex.Ini')
If @error Then
Return
Else
Select
Case $advRead = 1
For $u = 1 To UBound($advIndex) - 1
If $advIndex[$u] = 'Cities' Or $advIndex[$u] = 'Accounts' Then
Else
_GUICtrlListBox_AddString($List2, IniRead(@ScriptDir & '\ads\adsIndex.Ini', $advIndex[$u], 'Title', Default) & ' [' & $advIndex[$u] & ']')
EndIf
Next
Return
Case $advEdit = 1 Or $advSend = 1
$advSelectedTitle = _GUICtrlListBox_GetText($List2, $advStringToEdit)
$advTitleIndex = StringRegExp($advSelectedTitle, '(?si)\[([0-9]*?)\]', 1)
Dim $advToedit
_FileReadToArray(@ScriptDir & '\ads\adv' & $advTitleIndex[0] & '.Txt', $advToedit)
If $advSend = 0 Then
_Form3addItem($advToedit[1], $advToedit[2], $advToedit[3], $advToedit[4], $advToedit[5], $advToedit[6], $advToedit[7])
Else
_sendData($advToedit[1], $advToedit[2], $advToedit[3], $advToedit[4], $advToedit[5], $advToedit[6], $advToedit[7], 0)
EndIf
EndSelect
EndIf
EndFunc ;==>_advRead
Func _treeAdd($parent_index, $child_index)
Dim $trees[8] = ["Транспорт", "Недвижимость", "Личные вещи", "Для дома и дачи", "Бытовая электроника", "Хобби и отдых", "Животные", "Работа и бизнес"]
Dim $auto[6] = ["Автомобили с пробегом", "Новые автомобили", "Мотоциклы и мототехника", "Грузовики и спецтехника", "Водный транспорт", "Запчасти и аксессуары"], $autoid[6] = ["9", "109", "14", "81", "11", "10"]
Dim $property[7] = ["Квартиры", "Комнаты", "Дома, дачи, коттеджи", "Земельные участки", "Гаражи и машиноместа", "Коммерческая недвижимость", "Недвижимость за рубежом"], $propertyid[7] = ["24", "23", "25", "26", "85", "42", "86"]
Dim $stuff[5] = ["Одежда, обувь, аксессуары", "Детская одежда и обувь", "Товары для детей и игрушки", "Часы и украшения", "Красота и здоровье"], $stuffid[5] = ["27", "29", "30", "28", "88"]
Dim $home[5] = ["Бытовая техника", "Мебель и интерьер", "Посуда и товары для кухни", "Ремонт и строительство", "Растения"], $homeid[5] = ["21", "20", "87", "19", "106"]
Dim $electr[9] = ["Аудио и видео", "Игры, приставки и программы", "Настольные компьютеры", "Ноутбуки", "Оргтехника и расходники", "Планшеты и электронные книги", "Телефоны", "Товары для компьютера", "Фототехника"], $electrid[9] = ["32", "97", "31", "98", "99", "96", "84", "101", "105"]
Dim $hobby[8] = ["Билеты и путешествия", "Велосипеды", "Книги и журналы", "Коллекционирование", "Музыкальные инструменты", "Охота и рыбалка", "Спорт и отдых", "Знакомства"], $hobbyid[8] = ["33", "34", "83", "36", "38", "102", "39", "103"]
Dim $animals[6] = ["Собаки", "Кошки", "Птицы", "Аквариум", "Другие животные", "Товары для животных"], $animalsid[6] = ["89", "90", "91", "92", "93", "94"]
Dim $business[4] = ["Работа", "Услуги", "Оборудование для бизнеса", "Продукты питания"], $businessid[4] = ["104", "43", "40", "82"]
Dim $subcategories[8] = [$auto, $property, $stuff, $home, $electr, $hobby, $animals, $business]
If $parent_index = False And $child_index = False Then
Dim $tree[8]
For $i = 0 To UBound($trees) - 1
$tree[$i] = _GUICtrlTreeView_Add($TreeView31, 0, $trees[$i])
Next
For $k = 0 To 7
$sub = $subcategories[$k]
For $l = 0 To UBound($sub) - 1
_GUICtrlTreeView_AddChild($TreeView31, $tree[$k], $sub[$l])
Next
Next
Else
Dim $subcategories_id[8] = [$autoid, $propertyid, $stuffid, $homeid, $electrid, $hobbyid, $animalsid, $businessid]
;$parent = $trees[$parent_index]
$sub = $subcategories_id[$parent_index]
$child = $sub[$child_index]
$sub_text = $subcategories[$parent_index]
$child_text = $sub_text[$child_index]
;MsgBox(0,'',$parent&''&$child)
EndIf
EndFunc ;==>_treeAdd
Файл: Avito_project.zip
На всякий случай отдельно выкладываю все инклуды:
Includes.zip
Снимок:

Источник: autoit-script.ru
Автор: valldar