В Matlab можно создавать исполняемые файлы Matlab Standalone (с помощью Matlab deployment tool), которые могут запускаться на машинах без установленного Matlab (правда, требуется установить специальный набор библиотек Matlab runtime). Первый запуск такой программы на новой машине требует заметного времени (от 15 секунд). При этом само приложение никаким образом не сигнализирует о том, что оно уже запущено, и начался процесс развертывания Matlab окружения для работы программы. Следующие запуски программы будут проходить быстрее, но все равно довольно заметное время пользователь находится в неведении о том, что происходит с программой. Подробнее проблема описана здесь. Приводится и решение такой проблемы — splash screen, т.е. вспомогательное всплывающее окно, создаваемое не с помощью Matlab, которое сообщает пользователю о том, что Matlab программа запускается, и нужно немного подождать. После того, как появилось окно основной Matlab программы, вспомогательное окно пропадает. Конечно, это не ускоряет запуск самого приложения Matlab, но помогает сгладить психологический дискомфорт. Решение для Windows от Yair Altman платное, здесь же приводится бесплатный аналог на Autoit3.
Программа SplashScreenApp
Идея вспомогательной программы SplashScreenApp взята у Yair Altman Splash window for deployed applications. Создается отдельное приложение, которое
- Запускает основное приложение (например, приложение Matlab Standalone).
- Показывает всплывающее сообщение о том, что главное приложение запускается.
- Ищет среди запущенных приложений окно главного приложения. Как только такое окно найдено, вспомогательная программа завершается.
SplashScreenApp написан на AutoIt3 и с помощью утилиты Aut2exe (входит в комплект AutoIt3) скрипт преобразован в исполняемый файл.
Программировать на AutoIt3 оказалось довольно просто (особенно при использовании готового решения для анимации GIFAnimation.au3 от trancexx GIF in AutoIt). Поэтому функционал SplashScreenApp дублирует функционал решения от Yair Altman, а также добавлен ряд новшеств:
- настройки приложения SplashScreenApp хранятся в отдельном ini-файле (новое),
- можно регулировать размер всплывающего окна SplashScreenApp,
- выбор изображение фона SplashScreenApp,
- выбор gif-файла с анимацией прогрессбара (loading-loop) (новое),
- можно создавать произвольное сообщение, которое будет отображаться в окне SplashScreenApp (новое)
Синтаксис SplashScreenApp
SplashScreenApp.exe
SplashScreenApp.exe «PathToConfigIni»
SplashScreenApp.exe «PathToConfigIni» «Param1″ Param2»
SplashScreenApp.exe считывает файл настроек по умолчанию из splash_config.ini, который должен быть в текущей директории
SplashScreenApp.exe «PathToConfigIni» читает настройки из ini-файла с полным путем PathToConfigInipath
SplashScreenApp.exe «PathToConfigIni» «Param1″ Param2» настройки берутся из файла по пути PathToConfigInipath, в главную программу передаются параметры Param1 и Param2
Настройки SplashScreenApp
По умолчанию файл настроек программы SplashScreenApp.exe splash_config.ini должен храниться в текущей директории. Все настройки программы разделены на три секции в ini-файле.
Cекция [Application] — Настройки основного приложения
-
- exe_path
Cодержит путь в кавычках «» к основному приложению
-
- exe_fig_title
Cодержит строку в кавычках «» с названием окна основного приложения. SplashScreenApp будет искать окно основного приложения по этой строке. Метод поиска строки в окнах регулируются параметром [Options]-WinTitleMatchMode
Секция[Gui] — Настройки внешнего вида всплывающего окна SplashScreenApp
-
- gui_width и gui_height
Устанавливают размеры окна SplashScreenApp. Фоновый рисунок будет масштабирован под новый размер окна. Эти параметры можно не использовать (просто закомментировать). По умолчанию размер окна SplashScreenApp равен размеру картинки-фона.
-
- background_path
Путь к файлу с фоновой картинкой. Формат файлов gif, png, bmp, jpg. Для картинки с прозрачностью лучше всего использовать формат gif.
-
- loading_loop_path
Путь к прогрессбару. Если выбрать loading_loop_path= , то прогрессбар не будет показан. Можно регулировать размер прогрессбара и его смещение вправо/влево (ключи loop_width, loop_height, loop_left_shift(сдвиг прогрессбара слева), loop_right_shift (сдвиг прогрессбара справа), единицы — пиксели)
-
- info_str
Строка-сообщение внизу сплывающего окна
Например, info_str=»Пожалуйста, подождите…nПрограмма запускается»
Символ n означает перенос на новую строку.
Свойства строки-сообщения регулируются следующими параметрами (необязательные параметры):
info_str_clr (цвет), info_str_fontname (шрифт), info_str_fontsize (размер шрифта), info_str_fontweight (стиль шрифта), info_str_fontattribute (italic, underline), info_str_alignment (выравнивание), info_string_shift (сдвиг строки в пикселях относительно прогрессбара), info_string_left_shift (сдвиг строки слева), info_string_right_shift (сдвиг строки справа).
-
- loading_loop_shift_bottom
Сдвиг в пикселях прогрессбара от нижнего края окна.
Секция [Options] — Внутренние настройки
-
- WinTitleMatchMode
Метод, с помощью которого ищется соответствие строки в exe_fig_title и заглавия окон.
1 — строка exe_fig_title ищется в заглавии окна с самого начала,
2 — ищется любая подстрока в заглавие окна, совпадающая с exe_fig_title,
3 — точное соответствие строк
значения -1..-3 — знак минус означает регистро-независимый поиск
-
- msg_timeout
Время в секундах, после которого будут закрыты окна с сообщениями от SplashScreenApp (по умолчанию 10 сек)
-
- exe_timeout
Время, в течение которого SplashScreenApp будет искать главное приложение. Если за это время окно не будет найдено, то SplashScreenApp выдаст соответствующее сообщение.
Советы по работе с SplashScreenApp
- Можно создать разные ярлыки для SplashScreenApp с разными настройками запуска основной программы.
- Можно распространять SplashScreenApp.exe вместе с главным приложением (например,вместе с Matlab Standalone), при этом сам файл SplashScreenApp.exe можно переименовать так, как хочется.
- Чтобы поменять иконку SplashScreenApp.exe придется перекомпилировать исходные файлы программы на AutoIt3 с помощью Aut2exe.
- Файл для прогрессбара (loading-loop) можно создать с помощью сервиса http://ajaxload.info.
- Файл фона для SplashScreenApp можно создать с помощью PowerPoint.
- С помощью AutoIt3 Aut2Exe можно поменять иконку приложения SplashScreenApp.exe (иконки можно найти на сайте https://www.iconfinder.com)
- SplashScreenApp можно использовать не только для приложений Matlab
Файлы для скачивания
Программа SplashWindowApp.exe
Тестовая программа
Исходные файлы SplashScreenApp на базе AutoIt3