Скрипты написаны на языке Defy. В самой программе есть помощник по языку.
В программе можно настроить запуск скриптов с определенным интервалом.
Можно добавлять свои скрипты.
Для удобства в пакет установки можно добавить и ваши скрипты, пишите на почту.
Синхронизация времени
// Устанавливает время на компьютере, если оно не совпадает с временем на сайте
Сайт = Этот.Определить(0, Объекты.Вебстраница, Свойства.Адрес, "http://moolex.ru/time.php");
Результат = Сайт.Обновить();
Если (Результат<=0) Тогда
Сообщить(Этот.Наименование, "Нет соединения");
Возврат 0;
Конец;
Поз = Строки.Найти(Сайт.Текст, "DT=");
Если (Поз=0) Тогда
Сообщить(Этот.Наименование, "Строка с точным временем не найдена");
Возврат 0;
Конец;
Стр = Строки.Подстрока(Сайт.Текст, 4, 19);
Если (Строки.Длина(Стр)<>19) Тогда
Сообщить(Этот.Наименование, "Строка с точным временем меньше 19 символов");
Возврат 0;
Конец;
ТекМомент = Моменты.Момент(Стр);
Если (ТекМомент=0) Тогда
Сообщить(Этот.Наименование, "Ошибка при преобразовании времени из строки");
Возврат 0;
Конец;
ТекМомент = ТекМомент + 1;
Если (Числа.Модуль(ТекМомент-Моменты.Текущий)>1) Тогда
Сообщить("Меняем время на компьютере "+Моменты.Текущий+" -> "+ТекМомент);
Моменты.Текущий = ТекМомент;
Конец;
Перезапуск модемов 3G
// Скрипт по перезапуску модемов
// пытаемся загрузить страницу из интернет, если не получается,
// то перезапускаем приложение для модема
Если (Окна.Активно()=1) Тогда Возврат; Конец; // если форма программы активна, то ничего не делаем
Если (Файлы.Есть("http://ya.ru")) Тогда Возврат; Конец;
перезапустили = 0;
ПапкаПрограммы = Компьютеры.Директории("%ProgramFiles%");
Список = Окна.Определить("МегаФон | Модем", "QWidget"); // если модем от мегафона
Если (Список.Количество()>0) Тогда
Объект = Список.Получить(0);
Окна.Закрыть(Объект);
Подождать(3);
Если (Окна.Класс()="QWidget") Тогда
Нажать(Клавиши.Ввод);
Конец;
Подождать(20);
Запустить(ПапкаПрограммы+"\MegaFon Modem\MegaFon Modem.exe");
перезапустили = 1;
Конец;
Список = Окна.Определить("USB-модем «Билайн»", "QWidget"); // если модем от билайн
Если (Список.Количество()>0) Тогда
Объект = Список.Получить(0);
Окна.Активизировать(Объект);
Окна.Закрыть(Объект);
Подождать(3);
Если (Окна.Класс()="QWidget") Тогда
Нажать(Клавиши.Ввод);
Конец;
Подождать(10);
Запустить(ПапкаПрограммы+"\USB-модем Билайн\Huawei\USB-modem Beeline.exe");
Подождать(20);
Список = Окна.Определить("USB-модем «Билайн»", "QWidget"); // еще раз определим положение окна
Если (Список.Количество()>0) Тогда
Объект = Список.Получить(0);
Окна.Активизировать(Объект);
Нажать(Клавиши.Левая, 1, Объект.Лево+525, Объект.Верх+345);
Конец;
перезапустили = 1;
Конец;
Список = Окна.Определить("Коннект", "TApplication"); // если модем от мтс
Если (Список.Количество()>0) Тогда
Объект = Список.Получить(0);
Окна.Активизировать(Объект);
Окна.Закрыть(Объект);
Подождать(3);
Если (Окна.Класс()="TApplication") Тогда
Нажать(Клавиши.Влево);
Нажать(Клавиши.Ввод);
Конец;
Подождать(20);
Запустить(ПапкаПрограммы+"\ConnectManager\UIMain.exe");
перезапустили = 1;
Конец;
Если (перезапустили=1) Тогда
// добавим в статистику момент перезапуска
Настройка = Главный.Определить(0, Объекты.Дерево, Свойства.Наименование, "Настройка");
ГруппаСтатистики = Настройка.Определить(0, Объекты.Группа, Свойства.Наименование, "Статистика");
СписокПерезапусков = Настройка.Определить(ГруппаСтатистики, Объекты.Список, Свойства.Наименование, "Перезапуски модема");
СписокПерезапусков.Колонки.Определить("Момент", Типы.Момент, 120, 1, 0);
Объект = СписокПерезапусков.Определить(0, Объекты.Объект, Свойства.Момент, Моменты.Текущий);
Конец;
Перезапуск компьютера
// Скрипт по перезапуску компьтера
// пытаемся загрузить страницу из интернет, если не получается, то перезапускаем компьютер
Если (Окна.Активно()=1) Тогда Возврат; Конец; // если форма программы активна, то ничего не делаем
Если (Файлы.Есть("http://ya.ru")) Тогда Возврат; Конец;
// добавим в статистику момент перезапуска
Настройка = Главный.Определить(0, Объекты.Дерево, Свойства.Наименование, "Настройка");
ГруппаСтатистики = Настройка.Определить(0, Объекты.Группа, Свойства.Наименование, "Статистика");
СписокПерезапусков = Настройка.Определить(ГруппаСтатистики, Объекты.Список, Свойства.Наименование, "Перезапуски компьютера");
СписокПерезапусков.Колонки.Определить("Момент", Типы.Момент, 120, 1, 0);
Объект = СписокПерезапусков.Определить(0, Объекты.Объект, Свойства.Момент, Моменты.Текущий);
// перезапускаем компьютер
Компьютеры.Выключить(1);
Выгрузка снимков на фтп
// Выгружаем снимки на фтп
// Сообщения.Очистить();
Фтп = 0;
Для Объект Из Главный Цикл
Если (Объект.'Тип объекта'<>Объекты.Фтп) Тогда Продолжить; Конец;
Если (Объект.Отмечен=0) Тогда Продолжить; Конец;
Фтп = Объект;
Прервать;
Конец;
Если (Фтп=0) Тогда Сообщить("Нет отмеченого фтп"); Возврат; Конец;
Если (Фтп.Хост="") Тогда Сообщить("Фтп не настроен, не задан хост"); Возврат; Конец;
Если (Фтп.Логин="") Тогда Сообщить("Фтп не настроен, не задан логин"); Возврат; Конец;
Фтп.Папка = Компьютеры.Имя;
номер = 1;
Для Камера Из Главный Цикл
Если (Камера.'Тип объекта'<>Объекты.Камера) Тогда Продолжить; Конец;
путь = Камера.'Путь для хранения снимков';
Снимки = Камера.Определить(0, Объекты.Список, Свойства.Наименование, "Снимки");
Отправленные = Камера.Определить(0, Объекты.Список, Свойства.Наименование, "Отправленные");
// Сообщить(Камера +номер+, всего снимков = +Снимки.Объектов);
выгружено = 0;
Для Снимок Из Снимки Цикл
запись = Снимок.Момент;
путь2 = Строки.Слева(запись, 10)+ "\"+ Строки.Строка(запись)+ ".jpg";
путь2 = Строки.Заменить(путь2, " ", "-");
путь2 = Строки.Заменить(путь2, ":", "-");
путь1 = путь + "\"+ путь2;
путь2 = Компьютеры.Имя + "\Camera-"+ номер + "\"+ путь2;
// Сообщить(Выгрузка на фтп, путь1, путь2);
Фтп.'Путь к файлу 1' = путь1;
Фтп.'Путь к файлу 2' = путь2;
рез = Фтп.Выполнить(Действия.'Отправить файл');
Если (рез>0) Тогда
Отправка = Отправленные.Добавить(Объекты.Объект);
Отправка.Момент = запись;
Отправка.'Момент отправки' = Моменты.Текущий;
выгружено = выгружено + 1;
Снимок.Неиспользуемый = 1;
Если (выгружено=30) Тогда Прервать; Конец; // выгружаем по 30 снимков максимум
Иначе
Сообщить("Нет соединения с "+Фтп.Хост+", ошибка", рез);
Прервать;
Конец;
Подождать(1);
Конец;
Снимки.Удалить(Свойства.Неиспользуемый, 1);
Если (выгружено>0) Тогда
Сообщить("Камера "+номер+", выгружено снимков = "+выгружено);
Конец;
номер = номер + 1;
Конец;
Загрузка снимков с фтп
// Загружаем снимки с фтп
// Сообщения.Очистить();
Фтп = 0;
Для Объект Из Главный Цикл
Если (Объект.'Тип объекта'<>Объекты.Фтп) Тогда Продолжить; Конец;
Если (Объект.Отмечен=0) Тогда Продолжить; Конец;
Фтп = Объект;
Прервать;
Конец;
Если (Фтп=0) Тогда Сообщить("Нет отмеченого фтп"); Возврат; Конец;
Если (Фтп.Хост="") Тогда Сообщить("Фтп не настроен, не задан хост"); Возврат; Конец;
Если (Фтп.Логин="") Тогда Сообщить("Фтп не настроен, не задан логин"); Возврат; Конец;
Если (Фтп.Папка="") Тогда Сообщить("Фтп не настроен, не задана папка( имя удаленного компьютера)"); Возврат; Конец;
Фтп.Перемещать = 1; // будем удалять файлы с ftp
Если (Фтп.Пароль="xxx") Тогда
Сообщить("Фтп не настроен"); Возврат;
Конец;
Результат = Фтп.Обновить();
Если (Результат<=0) Тогда
Сообщить("Нет соединения с фтп", Фтп.Логин);
Возврат 0;
Конец;
ПутьКДанным = Файлы.Путь(Главный.'Путь к файлу');
загружено = 0;
Для Файл Из Фтп Цикл
Если (Файл.'Тип объекта'<>Объекты.Файл) Тогда Продолжить; Конец;
путь1 = Файл.'Путь к файлу';
поз = Строки.Найти(путь1, Фтп.Папка);
путь1 = Строки.Справа(путь1, Строки.Длина(путь1)-поз+1);
путь2 = ПутьКДанным + "\"+ путь1;
// Сообщить(путь1, путь2);
Фтп.'Путь к файлу 1' = путь1;
Фтп.'Путь к файлу 2' = путь2;
рез = Фтп.Выполнить(Действия.'Получить файл');
Если (рез>0) Тогда
загружено = загружено + 1;
Иначе
Сообщить("Нет соединения с Фтп", Фтп.Хост);
Прервать;
Конец;
Если (загружено=30) Тогда Прервать; Конец;
Конец;
Если (загружено>0) Тогда
Сообщить("Загружено "+загружено+" файлов ", Фтп.Папка);
Главный.Выполнить(Действия.'Обновить директории снимков');
Конец;
Удаление старых снимков
// Удаляем снимки старее месяца
НачальныйМомент = Моменты.Текущий;
НачальныйМомент = НачальныйМомент - 30* 24* 60* 60;
Для Камера Из Главный Цикл
Если (Камера.'Тип объекта'<>Объекты.Камера) Тогда Продолжить; Конец;
Снимки = Камера.Определить(0, Объекты.Список, Свойства.Наименование, "Снимки");
Для Снимок Из Снимки Цикл
Если (Снимок.'Момент времени'<НачальныйМомент) Тогда
Снимок.Неиспользуемый = 1;
Конец;
Конец;
Снимки.Удалить(Свойства.Неиспользуемый, 1);
Отправленные = Камера.Определить(0, Объекты.Список, Свойства.Наименование, "Отправленные");
Для Снимок Из Отправленные Цикл
Если (Снимок.'Момент времени'<НачальныйМомент) Тогда
Снимок.Неиспользуемый = 1;
Конец;
Конец;
Отправленные.Удалить(Свойства.Неиспользуемый, 1);
Конец;
Оптимизация реестра
// Оптимизация реестра
// Некоторые изменения в реестре для корректной работы Windows
// 1.Принудительное завершение работы программ при возможном автоматическом перезапуске компьютера
Компьютеры.Реестр.Установить("HKCU\Control Panel\Desktop", "AutoEndTasks", "1");
Перезапуск Ammyy
// При отключении интернета программа Ammyy выдает окно с ошибкой и не подключается заново сама
// Закроем окно с ошибкой и подключим программу заново
Если (Окна.Есть("Ammyy", "#")) Тогда
Окна.Активизировать("Ammyy", "#");
Нажать(Клавиши.Ввод);
Подождать(2);
Нажать(Клавиши.Ввод);
Конец;
Если (Окна.Есть("Proxy Setting", "#")) Тогда
Окна.Активизировать("Proxy Setting", "#");
Нажать(Клавиши.Ввод);
Конец;
Запуск газового котла
// Запускаем котел в определенный промежуток времени
//(подробности смотрите на сайте www.storog.ru на странице заметки)
ПутьКПрограмме = "D:\MP709\MP709.exe"; // путь к программе по управлению USB-реле
ИмяРеле = "00000C1F"; // имя вашего реле можно посмотреть и задать в самой программе MP709.exe
Если (Файлы.Есть(ПутьКПрограмме)=0) Тогда
Сообщить("Программа по запуску котла не обнаружена", ПутьКПрограмме);
Возврат;
Конец;
// Определяем текущее состояние котла
ТекущееСостояние = "OFF";
Текст = "";
Текст.Прочитать(Строки.Заменить(ПутьКПрограмме, "exe", "local.state"));
Для Стр Из Текст Цикл
Если (Строки.Найти(Стр, ИмяРеле)=1) Тогда
ТекущееСостояние = Строки.Значение(Стр);
Конец;
Конец;
// Определяем новое состояние котла
НовоеСостояние = "OFF";
Если ((Моменты.Час(Моменты.Текущий)>=7)И(Моменты.Час(Моменты.Текущий)<15)) Тогда
НовоеСостояние = "ON";
Конец;
Если (ТекущееСостояние<>НовоеСостояние) Тогда
Сообщить("Изменям состояние котла", НовоеСостояние);
Запустить(ПутьКПрограмме, ИмяРеле+"="+НовоеСостояние);
Конец;
Уменьшить количество снимков
// Уменьшаем количество снимков для уменьшения объема данных
// задаем интервал между снимками в секундах, все что меньше интервала удаляем
макс_интервал = 120; // необходимый интервал в секундах
Путь = "D:\Storog\Data\ХХХ-ХХХ-ХХХ-ХХХ\Camera-1"; // здесь надо указать правильный путь к каталогу снимков камеры
Если (Файлы.Есть(Путь)=0) Тогда
Сообщить("Путь не существует", Путь);
Возврат;
Конец;
// Сообщения.Очистить();
Массив = Массивы.Массив();
Удалено = 0;
Папки = Файлы.Имена(Путь, , 1);
Для Папка Из Папки Цикл
Сообщить("Обработка", Путь+Символы.ОС+Папка);
ИменаФайлов = Файлы.Имена(Путь+Символы.ОС+Папка, "jpg");
Для Файл Из ИменаФайлов Цикл
зн = Файлы.Имя(Файл);
Массив.Определить(Моменты.Момент(Файлы.Имя(Файл)));
Конец;
мм = 0;
Для Значение Из Массив Цикл
Если (мм>0) Тогда
дельта = Значение - мм;
Если (дельта<макс_интервал) Тогда
Стр = Путь + Символы.ОС + Папка + Символы.ОС + Моменты.Строка(Значение, "гггг-ММ-дд-чч-мм-сс")+ ".jpg";
// Сообщить(Удаляем, Стр);
рез = Файлы.Удалить(Стр);
Если (рез=0) Тогда
Сообщить("Не могу удалить файл", Стр);
Возврат;
Конец;
Удалено = Удалено + 1;
Иначе
мм = Значение;
Конец;
Иначе
мм = Значение;
Конец;
Конец;
Массив.Очистить();
// Прервать;// для теста
Конец;
Сообщить("Удалено файлов", Удалено);
Проверка директории с данными модема
// Проверка директории с данными модема
// Модем 3G при длительной работе создает большие лог-файлы и начинает работать медленней.
// Периодически эти файлы лучше удалять.
// Данный скрипт проверяет объем с данными модема и открывает директорию если он больше 5 Мб.
Папка = "C:\ProgramData\USB-modem Beeline\Huawei\log";
Размер = Файлы.Размер(Папка);
Если (Размер>5000000) Тогда
Сообщить("Размер папки большой", Папка);
Запустить(Папка);
Конец;
Проверка качества сигнала модема
// Проверка качества сигнала модема
// На сайте http:// remo-zavod.ru/files/software есть хорошая программа MDMA для мониторинга качества сигнала.
// Данный скрипт скачивает архив с программой и распаковывает его.
// Перед запуском программы не забудьте закрыть приложение по работе с модемом.
Путь = Компьютеры.Директории("%DATA%");
Файлы.Копировать("http://remo-zavod.ru/ftpgetfile.php?id=100&module=files", Путь+"\MDMA.zip");
Запустить(Компьютеры.Директории("%RES%")+"\7za.exe", "e "+Путь+"\MDMA.zip -o"+Путь+"\MDMA", , 1); // распакуем архив
Запустить(Путь+"\MDMA");