Раннее мы обновляли справочник страховых организаций, делается это редко, и я успеваю забыть, что нужно делать. Да и выполнять все эти действия мне просто лень. Но обновлять справочник надо. Поэтому я затеял с помощью не сложной программы упростить такую скучную работу. Программу для загрузки справочника я сделаю на ISN Autoit Studio.
Если вы еще не установили эту IDE, вот ссылка на сайт автора этого проекта и ссылки на загрузку. Установив и настроив Autoit Studio, приступим к созданию первого проекта.
Создаем новый проект.
Указываем название проекта, имя автора и нажимаем на кнопку «Создать новый проект»
Для того чтобы создать форму необходимо нажать правой клавишей мыши по папке Forms. В открывшемся контекстном меню выбираем «Создать» -> «Создать новый файл» -> «AutoIt GUI(.isf)»
В открывшемся окне даем название форме. У меня форма называется просто — Form. После нажатия кнопки OK, выбираем папку куда сохранить шаблон формы.
Запускается редактор форм. Для тестирования формы добавим первую кнопку и укажем её текст и дескриптор.
Ну вот форма готова и подключена через инклуд в основной скрипт. Попробуем запустить компиляцию. Скорее всего ничего не произойдет, т.к. мы не указали параметры для отображения нашей формы. Пропишем в скрипте следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include "Forms\Form.isf" ;покажем GUI на экране GUISetState(@SW_SHOW, $Form) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd |
Первой строкой мы вызвали функцию GUISetState, которая изменяет поведение GUI. Первый параметр @SW_SHOW показывает ранее скрытое окно. Второй параметр это дескриптор окна. Бесконечный цикл нужен для того, чтобы форма работала постоянно, до тех пор пока мы не захотим закрыть её.
Теперь скомпилировав проект мы увидим нашу форму. Настало время добавить функционал для нашей программки. Для этого создадим функцию которая будет вызываться после нажатия на кнопку.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $testbutton _Testbutton_Click() EndSwitch WEnd #Region Custom Functions ; #FUNCTION# ==================================================================================================================== ; Name ..........: _Testbutton_Click ; Description ...: Эта функция выполняются, когда вы нажимаете на кнопку в GUI. ; Syntax ........: _Testbutton_Click() ; Parameters ....: None ; Return values .: None ; Author ........: Hodogor ; Modified ......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _Testbutton_Click() GUICtrlSetData($logedit,@CRLF & @HOUR & ':' & @MIN & ':' & @SEC & "/Вы нажали кнопку" ,1) EndFunc #EndRegion Custom Functions |
После нажатия кнопки F5 запустится отладка нашего приложения.
Нажав тестовую кнопку должна выполниться функция с единственной строкой GUICtrlSetData($logedit,@CRLF & @HOUR & ‘:’ & @MIN & ‘:’ & @SEC & «/Вы нажали кнопку» ,1), которая вставит в поле edit сообщение не удаляя прошлые записи, т.к. указана единица третьим параметром.
Попробуем теперь скачать так необходимый нам справочник. Создадим две локальные переменные в которых будут хранится данные откуда необходимо скачивать и куда скачивать. Загружаться файл будет в ту же директорию где находится файл со скриптом, и поэтому лучше использовать макрос @ScriptDir.
1 2 |
Local $sUrl = "http://www.fomsrt.ru/infinter/classifiers/fed_nsi/index.php?ELEMENT_ID=1630" Local $sFileZip = @ScriptDir & "\filename.zip" |
Для загрузки будем использовать библиотеку IE.au3. Не забудьте подключить её.
1 |
#include <IE.au3> |
В нашем проекте для того, чтобы найти и скачать самую свежую версию справочника, мы будем использовать следующие функции:
- _IECreate() — Создаёт окно браузера Internet Explorer.
- _IETagNameGetCollection() — Возвращает объект коллекции всех элементов в объекте с указанным TagName или один элемент по индексу.
- InetGet() — Загружает файл из интернета, используя протоколы HTTP, HTTPS или FTP и сохраняет его на диске.
Вот пример функции для поиска и загрузки файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Func _Testbutton_Click($sUrl, $sNameFile) GUICtrlSetData($logedit, @CRLF & @HOUR & ':' & @MIN & ':' & @SEC & "/===Старт загрузки===", 1) Local $oIE = _IECreate($sUrl,0,0,1,1) $oDivs = _IETagNameGetCollection($oIE, 'a') For $oDiv In $oDivs If $oDiv.classname == 'a_w_underline' Then Local $sHref = $oDiv.href ExitLoop EndIf Next _IEQuit ($oIE) GUICtrlSetData($logedit, @CRLF & @HOUR & ':' & @MIN & ':' & @SEC & "/Найден справочник - " & $sHref, 1) InetGet($sHref, $sNameFile) GUICtrlSetData($logedit, @CRLF & @HOUR & ':' & @MIN & ':' & @SEC & "/Файл загружен:" & @CRLF & " - " & $sNameFile, 1) GUICtrlSetData($logedit, @CRLF & @HOUR & ':' & @MIN & ':' & @SEC & "/===Конец загрузки==="& @CRLF & @CRLF , 1) EndFunc ;==>_Testbutton_Click |
Дописав последние строчки кода и проверив код на ошибки можно смело собирать наш проект нажав «F7», либо через «Проект» -> «Собрать проект» -> «Собрать проект».
Ну вот и все. Скачать исходник проекта можно ниже по ссылке.
[sdm_download id=»641″ fancy=»1″]