gifts2017

Качалка

Опубликовал TrashMaser TrashMaster@ro.ru (TrashMaster) в раздел Администрирование - Поиск данных

Менеджер закачки и средство автоматизации обработки web-данных в одном флаконе.
Интерактивный режим работы: фоновое скачивание, многопоточная фоновая проверка ссылок.
Параллельное выполнение парсера, проверки, скачивания, редактирования списка и другие действия.
Авто подключение через активный прокси.
Индикация всех процессов: парсинга, проверки, скачивания, оставшегося времени, скорости (текущая и средняя), свободного места, состояния прокси соединения.
Модульная структура: 3 парсера, 2 модуля скачивания, 2 экспорта, 1 печати.
Экспорт в списки закачки для «Download Master», «ReGet».
Список закачки в виде дерева значений – логическое структурирование данных, организация подпапок хранения.
Печатная форма для дерева закачки на СКД.
Веб-браузер: авто подбор парсера, история просмотра, «домашние страницы».
Для программиста: легко расширяемых функционал (есть демо-модули для примеров); настраиваемый лог; авто подключение новых модулей в интерфейсе; открытый код.
По возможности максимально применены сначала встроенные объекты 1С и затем ОС Windows (ПолеHTMLДокумента, ЧтениеXML и COM: WinHttp.WinHttpRequest, MSXML2.DomDocument, winmgmts).
Не использовались: временные файлы, скрипты, внешние компоненты.

Инструкция

Хотя процесс работы с качалкой аналогичен работе с программами подобного назначения, небольшая инструкция для пользователей не помешает.

На закладке "HTML" имеется браузер, строка адреса которого используется в качестве стартового URL для начала заполнения списка закачек.
Заполнение запускается командами "Разбор HTML-страницы ..." в текущий или новый список. Разбор выполняется одним из парсеров выбранных на этой же закладке. Пока работает парсер - нажатая кнопка будет в состоянии "выделена". Прервать работу можно комбинацией Ctrl+Break.
Собственно встроенный браузер нужен только чтобы убедиться, что открыта правильная начальная страница. Кнопка с "домиком", намекает, что для сайтов в её списке имеются специально обученные парсеры. В зависимости от имени домена после загрузки страницы в браузере парсер переключается, что не запрещает выбрать подходящий по смыслу из списка в ручную перед запуском разбора.

Отработав, парсер открывает закладку "Список", где мы получаем лист закачки, в котором как минимум заполнена колонка URL.
Для заполнения колонок "состояние", "тип", "размер" автоматически запускается команда "Получить заголовки HTTP".
Так как это асинхронный процесс, можно не дожидаясь его окончания редактировать дерево или запустить закачки.
Прервать или запустить процесс снова можно в любой момент нажатием кнопки "Получить заголовки HTTP".

Для редактирования дерева стандартные кнопки дополнены командами массового изменения (сначала с Shift выделяем строки).
Кликом в колонке "Очередь скачивания" (со стрелкой вниз в заголовке) строка подтверждается или исключается из планируемых закачек (включая подчиненные узлы). В этой же колонке появляется стрелка вниз в процесс скачивания и затем "черный квадратик" в случае успешного выполнения.
Изначально другие колонки дерева защищены от изменения "вдавливание" кнопки с карандашом переключает дерево в режим редактирования колонок и обратно. В режиме редактирования дерева появляется кнопка "открыть файл" (по выделенной строке), чтобы ради этого не переключать лишний раз режим дерева. Для обладателей программы Proxy Switcher в панели добавляется кнопка её запуска (чтобы далеко не лезть, как понадобится прокси).

Двойной клик в списке - выборочная закачка по строке.
Двойной клик в списке в момент закачки - добавляет строку в "приоритетные закачки", которые будут выполнены перед основной очередью.
Двойной клик по строке со скачанным файлом - его запуск ассоциированной программой.
Клик по колонке URL - открытие страницы во встроенном браузере (открывается закладка HTML).

Закончим начальную подготовку заглянув на закладку "Настройки" и выбрав каталог для записи.
Также стоит обратить внимание, что настройки сохраняются стандартным для форм механизмом (сохранить/восстановить значения), а для дерева закачек предусмотрено сохранение и экспорт в файл.

Итак, все готово к основному процессу. Запустить/прервать закачки можно в любой момент нажатием кнопки "Запустить модуль скачивания...". Прервать все выполняющиеся процессы в обработке - Ctrl+Break.

Легенда по основным иконкам:

Особенности реализации

Раздел для интересующихся технологическими деталями.

Минимализм

В обработке не предусмотрено никаких дополнительных средств авторизации. Есть внешние программы для решения этой задачи на качественно лучшем уровне.
Если уж очень нужно - не забываем про веб-формы во встроенном браузере и строку адреса.

Асинхронный режим

Асинхронно выполняется только получение пакетов данных объектом «WinHttp.WinHttpRequest», что в комбинации с обработками ожидания дает неплохую «псевдо» параллельность работы. Естественно «настоящий» менеджер закачек быстрее, поэтому есть экспорт списка. На практике пропускную способность серверов обычно лимитируют так, что существенной разницы в скорости с Качалкой может и не быть.

Проверка ссылок

Необходимый перед загрузкой процесс выявления «живых» ссылок, обычно еще дает информацию о типе и размере файлов. Используется для статистики в индикаторах.
Для слабых серверов не рекомендуется ставить в настройке больше 5 потоков. Большое количество может быть расценено, как DoS-атака.

Использование прокси

Задачи нахождения прокси и прочие тонкости с этим связанные предоставляются специализированным программ, вроде Proxy Switcher. Флажок «Использовать активное прокси-соединение» в настройках Качалки позволяет использовать активный коннект, если он есть. На форме отображается состояние соединения, адрес, порт сервера и состояние использования.

Настройки

Таймаут получения заголовка - технически достаточно 100 мсек., но на серверной стороне оценивается количество запросов в минуту и не стоит сильно накручивать этот показатель, если один пакет притормозил. Лучше подождать несколько секунд, чем получить бан на долго. По умолчанию 5000.

Блок скачивания, Мб - размер передаваемого пакета за запрос. На скорость передачи влияет только косвенно - если связь часто обрывается, то небольшой размер выгоднее. Независимо от размера блока в момент передачи файл хранится в памяти объекта ADODB.Stream. Только когда файл полностью получен, он записывается на диск и память освобождается. С одной стороны, достаточно простым кодом это минимизирует возможность появления "криво" скачанного файла, но с другой, возникает пиковая нагрузка на диск и память, поэтому с такой схемой не разгуляешься с количеством потоков.

«Потоков скачивания файлов» пока действует только 1.

Часть настроек может быть не задействована, например в демо-модулях.

Модульная структура

Эта обработка задумана в виде оболочки с пополняемым набором возможностей. Поэтому для удобства разработки и улучшения структуры кода функциональные блоки разнесены по отдельным формам.
Фактически формы тут используются как не визуальные объекты. Назначение их хранится в комментарии свойств (Парсер, МодульСкачивания, Печать, Экспорт) и используется для динамического подключения в меню и настройки. Управление такими «модулями» осуществляется через процедуры «Запустить», «Остановить», а состояние надо смотреть по переменной булево «Выполняется».
Скопировав форму получаем новый  уже подключенный модуль.
Если нужен другой алгоритм - можно сразу приступить к его реализации не вдаваясь в детали, как устроена интерфейсная часть (в параметрах по ссылкам доступны необходимые объекты и не важно, где они расположены и как называются).

Для примера приведу модуль парсера "простой", который собирает ссылки на странице. Изменим одну строку сравнения с "http://" на "mailto:" и получим сборщик электронных адресов. Принимая во внимание остальной арсенал модулей - мы только-что создали полнофункциональную программу для подготовки списков рассылки. Помоему неплохо, учитывая что для этого нужно было прочитать 30 строк кода и напечатать 7 символов.

//HTML   - Поле HTML документа
//Дерево - ДеревоЗначений
Процедура Запустить(HTML, Дерево) Экспорт
    
    Параметры.Парсер.Выполняется = Истина;
    Параметры.Парсер.Индикатор.Значение=0;
    Список = HTML.Документ.GetElementsByTagName("A");
    Параметры.Парсер.Индикатор.МаксимальноеЗначение = Список.length;
    Параметры.Парсер.Индикатор.Видимость = Истина;
    
    для каждого Элемент из Список цикл
        
        ОбработкаПрерыванияПользователя();
        Параметры.Парсер.Индикатор.Значение = Параметры.Парсер.Индикатор.Значение + 1;
        попытка
            href = Элемент.href;
        исключение
            Продолжить;
        конецпопытки;
        если Дерево.Строки.Найти(href, "URL", Истина) <> Неопределено тогда // повтор
            Продолжить;
        иначеесли Лев(href, 7) <> "http://" тогда  // неверный формат
            Продолжить;
        конецесли;
        Стр = Дерево.Строки.Добавить();
        Стр.Наименование = Элемент.innerText;
        Стр.Категория = "Разное";
        Стр.URL = Элемент.href;
        Стр.Очередь = Истина;
        
    конеццикла;
    
    Остановить();
    Параметры.ПолучитьЗаголовкиHTTP.Запустить(); // запуск следующего модуля
    
КонецПроцедуры

Процедура Остановить() Экспорт
    Параметры.Парсер.Выполняется = Ложь;
    Параметры.Парсер.Индикатор.Видимость = Ложь;
    Параметры.Парсер.Кнопка.Пометка = Ложь;
КонецПроцедуры

Причина появления обработки

Тут попытаюсь объяснить, чем меня не устраивает аналогичный софт.
Хороших менеджеров закачки предостаточно, программ для скачки сайтов - тоже. Периодически таким софтом пользуюсь, но не попадалась программка, в которой можно добавить свой скрипт в пару строк для разбора страницы, чтобы вытащить описание. Максимум, что бывает – фильтры по свойствам файлов (тип, дата, размер). Под дополнительные сведения обычно одно поле отводится, что маловато.
Если 3 строки можно руками заполнить, то для 100 000 файлов это уже не вариант. Тем более если требуется синхронизировать по разным источникам или залить результат в базу.
Для устранения пробелов в привычном софте и появилась эта обработка.

К моменту выпуска релиза: Качалка стала полнофункциональным менеджером закачки; сохранена интеграция с тяжёлой артиллерией софтопрома; выполнена боевая «обкатка». В мирных целях Качалка может парсить MSDN - результаты используются в разработке «Все константы MS Office».

 

 

Картинки

Браузер

Редактор дерева закачки

Настройки

Печатная форма

Качалка в работе (gif)

Парсер для MSDN

Многопоточная проверка ссылок

Модуль скачивания в деле



 

Лог изменений

v.1 fix 1

fix Исправлена функция получения иконки сайта для строки поиска в браузере КартинкаДомена(). Если формат скачанного ресурса не поддерживается - используется встроенная картинка.
fix Реализована поддержка версий до 8.2.17, в которых нет функции ТекущаяУниверсальнаяДатаВМиллисекундах(). Произведена замена на универсальную ДатаВМиллисекундах(), которая в старых версиях дает меньшую точность. Может кому-то пригодится.

Функция ДатаВМиллисекундах() Экспорт
    Перем Время;
    Попытка
        Выполнить("Время=ТекущаяУниверсальнаяДатаВМиллисекундах();");
        Возврат Время;
    Исключение
        Возврат (ТекущаяДата()-Дата("00000000"))*1000;
    КонецПопытки;
КонецФункции

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Качалка_1.epf
.epf 81,20Kb
06.09.13
74
.epf 1 81,20Kb 74 Скачать
Качалка_1_fix1.epf (самая новая версия)
.epf 81,24Kb
09.10.13
66
.epf 1 fix1 81,24Kb 66 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. TrashMaser TrashMaster@ro.ru (TrashMaster) 07.09.13 14:15
Как то не густо комментариев. Начну сам.

Может кто-нибудь подскажет системный COM объект, которым можно сделать асинхронную запись скачанного файла?
Сейчас по простому: из WinHttp.WinHttpRequest ResponseBody передается в ADODB.Stream и пока он пишет все останавливается.

Недокументированная функция Качалки: двойной клик в списке - выборочная закачка по строке. Двойной клик в списке в момент закачки - добавляет строку в "приоритетные закачки", которые будут выполнены перед основной очередью. Ну и двойной клик по строке со скачанным файлом - его запуск ассоциированной программой.
2. Виталий Черненко (SeiOkami) 07.09.13 19:56
Жесть. Будет время - опробую. Но работа должна была быть громадной, так что по-любому "плюс"!
3. TrashMaser TrashMaster@ro.ru (TrashMaster) 07.09.13 20:27
(2)
В основном спортивный интерес был - смогёт родимая 1с-ка или сдохнет, ну и усложнял понемногу.
4. Аркадий Кучер (Abadonna) 08.09.13 08:25
(3) TrashMaster, "В основном спортивный интерес был"
Спортивный интерес - целиком и полностью одобряю. Но так никогда и не мог понять - на фига всё пытаться в 1С запихать? ;) То игрушки, то качалки, то еще что...
5. TrashMaser TrashMaster@ro.ru (TrashMaster) 08.09.13 09:51
(4) У меня потом данные из дерева сливаются в базу с полнотекстовым поиском (книги, тексты, разработки, чертежи, медиа и прочее), поэтому дешевле было сделать в одной среде. Спортивный интерес, только к качеству исполнения относится.

Игры в 1с, хз, вроде творчество, а на деле новых идей не видно.
6. Сергей Ожерельев (Поручик) 08.09.13 16:59
(4) А ещё здесь был целый файловый менеджер.
7. TrashMaser TrashMaster@ro.ru (TrashMaster) 08.09.13 18:38
(6) Какой там файловый, вот есть инсталлятор!!! на УФ, сама 1С выпускает
осталось только дрова от сетевух и материнок добавить и УТ11 можно будет впаривать, как решение для сисадминов.
8. Дмитрий Назаров (greenLiss) 08.09.13 19:30
для меня, не так интересен смысл программы, как сама программа, очень хочется посмотреть, как она написана и что применялось :) Спасибо большое +
9. Яков Коган (Yashazz) 09.09.13 11:43
Поскольку сам имел дело с асинхроном и WinHttp.WinHttpRequest в частности, выражаю респекты!
Единственно что, насколько понимаю, это всё тот же встроенный браузер 1С, а значит, покоцанный IE7, и на многих современных сайтах корректно работать не будет. Так, да?
10. Ийон Тихий (cool.vlad4) 09.09.13 12:08
(1) TrashMaster,
Может кто-нибудь подскажет системный COM объект, которым можно сделать асинхронную запись скачанного файла?
мне такой неизвестен. проще самому написать либо com server, либо ВК. если это сложно, то как вариант (но не очень хороший), запускать генерируемые 1С vbs скрипты параллельно, не дожидаясь их завершения.
11. TrashMaser TrashMaster@ro.ru (TrashMaster) 09.09.13 12:30
(9) Yashazz, сначала уточню "не будет корректно отображать страницу". Да это именно ПолеHTMLДокумента и вот почему:
1) Скрипты отработают и этого достаточно для разбора страницы в браузере.
2) Везде где массовый разбор используются только ЧтениеXML + ПостроительDOM или ТекстовыйДокумент. Догадайтесь почему?
3) ПолеHTMLДокумента это отдельная тема: это встроенный объект, который надо знать, он же по наследству достался 8.3. С IE знаком хорошо, а вот ПолеHTMLДокумента дало неожиданных сюрприз.

Есть идея добавить ещё закладку с IE, а парсеры сделать универсальными. Но это "поле" все равно надо оставить.
12. TrashMaser TrashMaster@ro.ru (TrashMaster) 09.09.13 13:07
(10) cool.vlad4, в том-то и вопрос, как сделать элегантно.
ВК есть смысл делать только по технологии NativeAPI,а это значит загонять туда весть функционал WinHttp, файлы-то гигабайтные передаются.
Свой COM - написать не сложно, но это уже не стандартно.
На скриптах будет плохо: из 1с все равно надо будет контролировать выполнение, снимать зависшие процессы, код усложнится, а бонусов никаких.

Задача в принципе плевая - принять уже заполненный поток и записать в нити, никакого обратного вызова не нужно. Сама винда подобные задачи ведь чем-то делает. Минимум врапом можно подцепить системную функцию.
13. Ийон Тихий (cool.vlad4) 09.09.13 14:43
(12) TrashMaster, ну в общем да, имеет смысл пожалуй больше Native делать (как минимум регистрация не нужна). насчет функционала WinHttp, - я больше чем уверен, что на Delphi, что на C++ с этим проблем нет и уже существует готовое решение. Вам просто нужно очертить, какие нестандартные функции требуются для обработки. асинхронные запросы + запись + возврат об успехе/неудаче(в виде например, внешнегособытия), например. написать пару функций и все. остальное можно будет решить и обычным WinHttp.
Свой COM - написать не сложно, но это уже не стандартно. Это да, но с другой стороны у COM, есть возможность написания событий, а потом уже через ДобавитьОбработчик в 1С их можно обрабатывать.
Скрипты - конечно, фигня, поскольку даже такая простая вещь как контроль числа потоков (не может же быть их бесконечное количество), оборачивается в нетривиальную задачу. после запуска скрипта 1С, ничего не знает об этом скрипте.
"Задача в принципе плевая - принять уже заполненный поток и записать в нити, никакого обратного вызова не нужно. " обратный вызов мне кажется все таки нужен, каким образом контролировать успех/неудачу, т.е. результат? ну к примеру на середине закачки, интернет вырубился? если все асинхронно, то 1С просто будет не в курсе, что там произошло.
"Сама винда подобные задачи ведь чем-то делает. Минимум врапом можно подцепить системную функцию."
можно, но имхо проще через компоненту. ладно бы вызывалось все стандартным документированным способом, но врап есть врап, я лично в свое время замучился им всякие параметры передавать и при этом получать ошибки.


14. Ийон Тихий (cool.vlad4) 09.09.13 14:49
(12) TrashMaster, ну и еще как вариант, написать простейший веб сервер (или сервис), к которому просто посылаются запросы на скачку, а он их обрабатывает. хотя особых плюсов перед ВК не вижу. также можно использовать wget, но это тоже, что и просто использовать скрипты.
15. TrashMaser TrashMaster@ro.ru (TrashMaster) 09.09.13 15:41
(105) Gazza,
каким образом контролировать успех/неудачу, т.е. результат? ну к примеру на середине закачки, интернет вырубился? если все асинхронно, то 1С просто будет не в курсе, что там произошло.

Скачивание идет небольшими блоками, либо скачался - либо оборвался - см статус ошибки в WinHttp.

Писать на ВК обертку по каждому поводу - жизни не хватит. Есть тема сделать асинхронное подключение интерпретатора скриптов через ВК с поддержкой обратного вызова в обработку внешнего события. Это закрыло бы проблему передачи параметров, прозрачного выполнения произвольного кода и калбэка в 1с.
Руки на месте, но надеюсь отделаться по легкому - подсказкой )
16. Ийон Тихий (cool.vlad4) 09.09.13 15:50
(15) TrashMaster,
Скачивание идет небольшими блоками, либо скачался - либо оборвался - см статус ошибки в WinHttp.
э, тогда я не совсем понимаю, зачем асинхронность, если нет callback-а. у 1С, то один поток, если его занять на слежение этого статуса ошибки, то какой в этом смысл?
Писать на ВК обертку по каждому поводу - жизни не хватит.
да, ну. мне кажется здесь нет ничего сложного. самый быстрый черновой вариант на C# пишется за вечер. там уже все готовое есть. тот же WebClientAsync можно использовать и не париться.
Есть тема сделать асинхронное подключение интерпретатора скриптов через ВК с поддержкой обратного вызова в обработку внешнего события.
ну, во-первых на этом сайте уже кто-то делал ВК, где подключил python. Во-вторых эта задача на порядок сложнее того, что вам надо.
ЗЫ. в dotnet есть COMVisible классы(разве, что их надо зарегистрировать). Например Новый COMОбъект("System.Net.WebClient"). Но там, блин, асинхронные методы(например WebClientAsync) у меня не получилось передать, поскольку 1С знать не знает объекты, которые требуется передавать в качестве параметра (например Uri, а это уже не COMVisible)
17. TrashMaser TrashMaster@ro.ru (TrashMaster) 09.09.13 16:36
(16) cool.vlad4,
Асинхронность нужна чтобы сделать многопоточность.

Корень проблемы сдеать Stream.SaveToFile асинхронно.

Stream, который пишем уже проверен и собран WinHttp.

Пример: файл 6 Гб сохраняется минуту (условно), в эту минуту все продолжает асинхронно скачиваться в память, но выполнение кода у нас стоит минуту на строке ADODB Stream.SaveToFile. Проходит эта минуты и видим, что потоки уже давно скачались а новые мы не запустили, потому, что файл писали. Получаем скачивание рывками и проигрыш в средней скорости.
Можно пойти на логические уловки, но замерзание программы на минуты неприемлемо, также как и усложнение кода в десять раз.

По идее ВК:
Асинхронный вызов делать можно (проверено)
Интерпретатор в адресном пространстве ВК - можно (проверено)
Далее внимание:
В ВК запускаем тексты скриптов в потоках. В секции синхронизации выполняем весь ввод-вывод с 1с и при необходимости делаем калбэк (не проверено, но не противоречит тестам 1 и 2).
Работу с COM-объектами придется портировать в скрипты, зато в них полная свобода действий.
18. Алексей Карвацкий (AVK_Alex) 10.09.13 10:22
Скажите, а этой мега-супер навороченной штукой можно качать с юзерс-в8-1с-ру?
Ибо пробовал разными менеджерами - не хотят, редиски...
19. Алексей Карвацкий (AVK_Alex) 10.09.13 10:23
20. Владимир Гусев (adhocprog) 10.09.13 12:54
21. TrashMaser TrashMaster@ro.ru (TrashMaster) 10.09.13 13:32
(18) AVK_Alex, прикрути авторизацию в модуле через SetRequestHead
22. TrashMaser TrashMaster@ro.ru (TrashMaster) 10.09.13 14:01
(8), (9), (18), (20)
Есть ли необходимость добавить в "качалку" подключение внешних обработок с модулями?
23. Алексей Карвацкий (AVK_Alex) 11.09.13 12:33
(21) TrashMaster, так то разбираться надо... хочется же нахаляву :)
Может, автор авторизовалку прикрутит?
24. TrashMaser TrashMaster@ro.ru (TrashMaster) 11.09.13 14:10
(23) AVK_Alex, "разбираться" это одну строку добавить в процедуру "запустить", в принципе можно обойтись и тем, что есть. Нужен браузер IE или встроенный в обработку. Авторизуйтесь в нем с Вашими учетными данными (как Вы это всегда делаете), затем прощёлкайте до станицы, где есть доступная по Вашей поддержке ссылка, далее по инструкции или картинкам в описании. Только все названия будут "Скачать дистрибутив", а имена сохраненных файлов "setup.exe". Сами понимаете - на каждом сайте своя структура - парсер с именем "простой" задачу успешно выполняет, но по этому и простой, что не учитывает специфику конкретного ресурса.
25. Александр Федоров (Sasha255n) 16.09.13 09:32
Ну вообщем то скорее да чем нет. Автору однозначно плюс и конечно вопрос риторический а чем она т.е. эта качалка лучше обыкновенных не совсем понятно. А так да внешне все достаточно очень даже ничего. Скажу больше я бы так не смог. Так что автору плюс.
26. TrashMaser TrashMaster@ro.ru (TrashMaster) 16.09.13 09:45
(25) Sasha255n, Лучше только этим: открытый код.
На 1С пока единственная, поэтому застолбил такое козырное название.
Спасибо за отзыв!
27. DZENN (Dzenn) 16.09.13 13:31
сей продукт не скачивал, потребности пока нет, но выглядит шикаааарно :)
28. TrashMaser TrashMaster@ro.ru (TrashMaster) 16.09.13 14:32
(27) DZENN, Спасибо! Тут лучше было показать "товар лицом", чем километр текста.
29. Wlad Gorbenko (XiPyPg) 26.09.13 10:47
круть респект. скачаю буду пользоваться.
30. A M (KrackMan) 02.10.13 08:47
Как выглядит: ТекущаяУниверсальнаяДатаВМиллисекундах() ? "Процедура или функция с указанным именем не определена".
31. TrashMaser TrashMaster@ro.ru (TrashMaster) 02.10.13 10:04
(30) KrackMan, начиная 8.2.17 выглядит как глобальный контекст (тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение).
Для старых версий сойдет ТекущаяДата() и поставить таймаут на три знака меньше,
или хардкор:
Script = Новый COMОбъект("MSScriptControl.ScriptControl");
Script.Language="javascript";
Возврат Script.Eval("new Date().getTime()");


Советую обновиться, в новых версиях доделан HTTPСоединение
KrackMan; +1 Ответить
32. TrashMaser TrashMaster@ro.ru (TrashMaster) 08.10.13 14:54
Выложил обновленную версию v.1 fix 1
Исправлен несущественный баг в интерфейсе.
Добавлена совместимость со старыми платформами 8.2 Выявлено в (30).

Просьба писать сюда об ошибках, если найдете.
33. smir (smir) 09.10.13 12:58
Обязательно скачаю, выглядит замечательно. Даже для собственных нужд %)
36. Vlad (KillHunter) 17.11.13 18:22
хардкор самый лучший вариант :):

Script = Новый COMОбъект("MSScriptControl.ScriptControl");
Script.Language="javascript";
Возврат Script.Eval("new Date().getTime()");
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа