Navigation




Здесь представлены готовые скрипты, которые идут с установкой программы.
Скрипты написаны на языке 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");