Navigation





Здесь представлены готовые скрипты, которые идут с установкой программы.
Скрипты написаны на языке Defy. В самой программе есть помощник по языку.
В программе можно настроить запуск скриптов с определенным интервалом.
Можно добавлять свои скрипты.
Для удобства в пакет установки можно добавить и ваши скрипты, пишите на почту.


Синхронизация времени

// Устанавливает время на компьютере, если оно не совпадает с временем на сайте
Сайт      = Этот.Определить(0, Объекты.Вебстраница, Свойства.Адрес, "http://moolex.ru/time.php");
Результат = Сайт.Обновить();
Если (Результат<=0) Тогда
    Сообщить(Этот.Наименование, "Нет соединения");
    Возврат 0;
Конец;
Поз = Строки.Найти(Сайт.Текст, "DT=");
Если (Поз=0) Тогда
    Сообщить(Этот.Наименование, "Строка с точным временем не найдена");
    Возврат 0;
Конец;
Стр = Строки.Подстрока(Сайт.Текст, 4, 19);
Если (Строки.Длина(Стр)<>19) Тогда
    Сообщить(Этот.Наименование, "Строка с точным временем меньше 19 символов");
    Возврат 0;
Конец;
ТекМомент = Моменты.Момент(Стр);
Если (ТекМомент=0) Тогда
    Сообщить(Этот.Наименование, "Ошибка при преобразовании времени из строки");
    Возврат 0;
Конец;
ТекМомент = ТекМомент + 1;
Если (Числа.Модуль(ТекМомент-Моменты.Текущий)>1) Тогда
    Сообщить("Меняем время на компьютере "+Моменты.Текущий+" -> "+ТекМомент);
    Моменты.Текущий = ТекМомент;
Конец;


Очистка временных директорий

// Удаляет временные файлы и папки с компьютера
Напомнить("Подождите...", Этот.Наименование);
Подождать(1);
Текст = "";
А     = Компьютеры.Директории("%TEMP%");
К     = Файлы.Очистить(А);
Текст.Добавить("Удалено "+К+" файлов и папок из "+А);
А = Компьютеры.Директории("%WINDIR%");
А = А + "\Temp";
К = Файлы.Очистить(А);
Текст.Добавить("Удалено "+К+" файлов и папок из "+А);
Сообщить(Текст);
Напомнить(Текст, Этот.Наименование, 15);


Пример работы с файлами

// Вытаскивает все файлы в подкаталогах на уровень вверх
// Есть каталог с подкаталогами
// надо вытащить все файлы в подкаталогах на уровень вверх
// и добавить к имени файла имя подкаталога.
// подкаталоги удалить.
Сообщения.Очистить();
Корень = "D:\Пример";
Папки  = Файлы.Имена(Корень, "", 1);
Сообщить("Было подкаталогов", Папки.Количество());
Для Папка Из Папки Цикл
    Сообщить("Обработка подкаталога", Папка);
    СФ = Файлы.Имена(Корень+Символы.ОС+Папка);
    Для Ф Из СФ Цикл
        Файлы.Копировать(Корень+Символы.ОС+Папка+Символы.ОС+Ф, Корень+Символы.ОС+Папка+"-"+Ф);
    Конец;
    Файлы.Удалить(Корень+Символы.ОС+Папка);
Конец;


Пример работы с архивами

// пример архивации всех подпапок в отдельные архивы
Сообщения.Очистить();
Путь           = "C:\Archives";
ИменаКаталогов = Файлы.Имена(Путь, "", 1);
Для ИмяКаталога Из ИменаКаталогов Цикл
    Путь2       = Путь  + Символы.ОС + ИмяКаталога;
    ПутьКАрхиву = Путь2 + ".zip";
    Если (Файлы.Есть(ПутьКАрхиву)=0) Тогда
        Сообщить("Архивируем..."+Путь2+" в "+ПутьКАрхиву);
        Запустить("C:\Program Files\WinRAR\WinRar.exe", "a -afzip -ep1 -r "+ПутьКАрхиву+" "+Путь2, 0, 1);
    Конец;
Конец;


Разделить снимки по датам

// пример работы с файлами
// Есть одна папка со снимками, в имени файла есть дата, например IMG-20171108-WA0001.jpg
// надо в этой директории создать создать папки с датами и разложить снимки по папкам
Сообщения.Очистить();
Путь    = "D:\Photo";
Имена   = Файлы.Имена(Путь);
снимков = Имена.Количество();
Для Стр Из Имена Цикл
    Стр2   = Строки.Заменить(Стр, "IMG_", "", "VID_", "", "SL_MO_", "", "IMG-", "", "VID-", "");
    Стр2   = Строки.Слева(Стр2,   8);
    Момент = Моменты.Момент(Стр2);
    Если (Момент<>0) Тогда
        Папка = Строки.Слева(Момент, 10);
        // Сообщить(Путь+Символы.ОС+Стр, Путь+Символы.ОС+Папка+Символы.ОС+Стр);
        Файлы.Переместить(Путь+Символы.ОС+Стр, Путь+Символы.ОС+Папка+Символы.ОС+Стр);
    Иначе
        Сообщить("Не могу определить дату из имени", Стр);
        Прервать;
    Конец;
Конец;
Сообщить("Обработано файлов", снимков);


Перезапуск модемов 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, Объекты.Объект, Свойства.Момент, Моменты.Текущий);
Конец;


Перезапуск Ammyy

// При отключении интернета программа Ammyy выдает окно с ошибкой и не подключается заново сама
// Закроем окно с ошибкой и подключим программу заново
Если (Окна.Есть("Ammyy", "#")) Тогда
    Окна.Активизировать("Ammyy", "#");
    Нажать(Клавиши.Ввод);
    Подождать(2);
    Нажать(Клавиши.Ввод);
Конец;
Если (Окна.Есть("Proxy Setting", "#")) Тогда
    Окна.Активизировать("Proxy Setting", "#");
    Нажать(Клавиши.Ввод);
Конец;


Перезапуск компьютера

// Скрипт по перезапуску компьтера
// пытаемся загрузить страницу из интернет, если не получается, то перезапускаем компьютер
Если (Окна.Активно()=1)           Тогда Возврат; Конец; // если форма программы активна, то ничего не делаем
Если (Файлы.Есть("http://ya.ru")) Тогда Возврат; Конец;

// добавим в статистику момент перезапуска
Настройка          = Главный.Определить(0,                  Объекты.Дерево, Свойства.Наименование, "Настройка");
ГруппаСтатистики   = Настройка.Определить(0,                Объекты.Группа, Свойства.Наименование, "Статистика");
СписокПерезапусков = Настройка.Определить(ГруппаСтатистики, Объекты.Список, Свойства.Наименование, "Перезапуски компьютера");
СписокПерезапусков.Колонки.Определить("Момент", Типы.Момент, 120, 1, 0);
Объект = СписокПерезапусков.Определить(0, Объекты.Объект, Свойства.Момент, Моменты.Текущий);

// перезапускаем компьютер
Компьютеры.Выключить(1);


Автовыключение компьютера

// Автоматическое выключение компьютера через 23 часа после запуска программы
// Для выполнения скрипта установите интервал автовыполнения скрипта 5 минут и активируйте скрипт
дельта = Числа.Число(Моменты.Текущий-Главный.'Момент запуска');
Если (дельта>23* 60* 60) Тогда
    Компьютеры.Выключить(0); // выключить компьютер
Конец;


Автовыключение компьютера вечером

// Автоматическое выключение компьютера вечером
// Для выполнения скрипта установите интервал автовыполнения скрипта 5 минут и активируйте скрипт
Если (Моменты.Час(Моменты.Текущий)=23) Тогда
    Компьютеры.Выключить(0); // выключить компьютер
Конец;


Узнать текущий курс Евро

Сайт      = Главный.Определить(0, Объекты.Вебстраница, Свойства.Адрес, "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");
Результат = Сайт.Обновить();
Если (Результат<=0) Тогда
    Сообщить(Этот.Наименование, "Нет соединения");
    Возврат 0;
Конец;
Текст = Сайт.Текст;
Для Стр Из Текст Цикл
    Если (Строки.Найти(Стр, "RUB")>0) Тогда
        Стр2 = Строки.Значение(Стр,  "rate='");
        Стр2 = Строки.Свойство(Стр2, "'");
        Курс = Числа.Число(Стр2);
        Стр3 = "1 EUR = "+           Строки.Строка(Курс)+ " RUB";
        Сообщить(Стр3);
        Уведомить(Стр3);
        Прервать;
    Конец;
Конец;