MortScript - вопросы и ответы

karlusha
MortScript



Сайт разработчика: www.sto-helit.de
Последнее обновление: 09.10.09


MortScript (бывший MortRunner) - эта бесплатная программа позволящая создать батники для PNA-D.

Сами файлы пишутся в любом текстовом редакторе и имеют расширение mscr.
Для корректного отображения кирилици в диалогах и сообщениях сохранять лучше в юникоде (UCS-2 Little Endian)


Скачать MortScript

Скрытый текст
У вас нет прав видеть этот текст. Пожалуйста зарегистрируйтесь..
Odisei
Вот ещё кое что нашол по этой теме

Наиболее популярные команды Морта.
В windows CE отсутствует такое понятие как пакетный файл. Провести серию команд внутренними средствами невозможно. Положение исправляет программа mortscript.
Комплект морт скрипт состоит из трех файлов: интерпретатора скрипта Mortscript.exe, ланчера и скрипта. Ланчер - это exe файл, единственное назначение которого запустить интерпретатор Морта и сообщить ему имя скрипта, который следует обработать. Морт определяет имя скрипта по имени ланчера, который его вызвал. Поэтому скрипт и ланчер должны иметь одно имя.
Скрипт, это файл с расширением mscr, который содержит текстовые команды. Это нечто вроде bat файла в среде DOS. Только bat файл интерпретируется операционной системой, а мортскрипт - интерпретатором Mortscript.exe.

folder = SystemPath("ScriptPath")
В среде WinCE командная строка обязательно должна содержать полный путь, исчисляемый от корневой папки прибора. Здесь нет понятия относительный путь, или текущая папка. Это порождает ряд проблем. Например, флешка выглядит в winCE как папка, лежащая в корневой папке. Стандарт на имя флеши есть только для КПК. Это - Storage Card. В ПНА каждый изощряется как может: SDMMC, Storage Card, StorageCard, итп.
Если прога лежит на флешке, то команда должна начинаться с ее имени. Разнобой в названии затрудняет написание универсального срипта. Здесь на помощь приходит указанная команда Она определяет путь к папке, где лежит скрипт Морта. А если скрипт лежит в папке программы, то и к программе. Дальше по тексту скриптов, вместо слова folder будет подставляться путь к программе.

Run ( folder \ "prog.exe")
или
RunWait ( folder \ "prog.exe")

Запускается программа с именем prog.exe.
Отличие команд заключается в том, что после команды Run сразу исполняется следующая команда скрипта, а в случае с RunWait, следующая команда исполнится только по завершении работы prog.exe.
Теперь рассмотрим как развернется первая команда. Допустим, что папка где лежит скрипт называется Navitel. Prog.exe = Navitel.exe и все это - на флешке sdmmc.
Переменная folder раскроется как
\sdmmc\Navitel\
а команда запуска будет выглядеть \sdmmc\Navitel\Navitel.exe
Интерпретатор игнорирует пробелы в команде. Для повышения наглядности, у меня элементы команды разделены пробелами. Морт их уберет. Можно этого не делать.
По той же причине имя исполнимого файла нужно закрывать кавычками. Ведь в имени файла может быть пробел.

Sleep (1200)
Пауза в исполнении скрипта равная 1200 мсек. Цифра может быть любая. Это, свого рода таймер.

XCopy ("\My Documents\GPS Tracks and Waypoints\*.*",folder \"storage\GPS Tracks and Waypoints",True,True)
Копирование всех файлов (шаблон *.*) из папки \My Documents\GPS Tracks and Waypoints\ в папку \sdmmc\Navitel\storage\GPS Tracks and Waypoints
Команда простая: откуда копировать - запятая - куда копировать - запятая - True - запятая - True
True - означает говорить да на вопросы, которые может задавать команда копироания. Напимер: перезаписать существующие файлы? Если прописано True - то да. Вместо True можно написать False, тогда ответ будет нет и существующие файлы не будут перезаписаны.
Привыкайте дорожки заключать в кавычки, иначе GPS Tracks and Waypoints морт раскроет как GPSTracksandWaypoints - уберет все пробелы.

Kill ("Program")
Завершает программу или процесс с именем Program.
Например
Kill ("Explorer.exe")
Убивает Explorer
Следует учесть, что убивается в процесс в памяти и дорожку прописывать нет смысла. Просто - имя программы. Ничего страшного не произойдет, если пропишете путь. Морт его просто отбросит.


Как создавать ярлыки программ.
1. Через эксплорер Activesync на ББ. Кликаем по файлу правой кнопкой мыши и выбираем Создать ярлык. Ярлык создается рядом. Переносим ярлык в нужную папку.
2. Через эксплорер WinCE. Кладем курсор на файл. Далее File - Send To - Desktop as Shortcut. Ярлык будет создан на рабочем столе. Переносим его при необходимости в другую папку.
3. Через тотал коммандер WinCE. Файл - Создать ярлык. При однооконном режиме ярлык создается рядом. При двухоконном - в соседнем окне.
4. Вручную. Создаем текстовой файл с расширением lnk и записываем в него дорожку к файлу, например:
\sdmms\mobilenavigator\mobilenavigator.exe
Считаем количество символов в строке. В данном случае 42. Ставим эту цифру впереди паровоза и разделяем решеткой:
42#\sdmms\mobilenavigator\mobilenavigator.exe.
Ярлык готов. Кладем в нужную папку.

Мудрёно это всё конечно,но как говорится искуство требует жертв.
Да и пока это самое понятное обьяснение,понятней не встречал а жаль.
так как остаются ещё кое какие не понятные нюансы,
но и за это огромное спасибо автору
Norm
Случайно наткнулся в инете на очень интересный вариант реализации скрипта.
Это MortExplorer
Интерфейс конечно прост дальше некуда, но в остальном это, в общем-то, полноценный Explorer с возможностями редактирования, например, текстовых файлов или реестра.

bosaxel
обращаюсь к понимающим .
опишу проблему. бекер с навигон7 . при нажатии на красную кнопку бекер, происходит вылет навигона с ошибкой. может кто поможет с морскриптом чтоб отключал кнопку при старте навигон и при выключении оного включал ее действовать обратно
?
спс
Norm
Тоесть на Бекере стоит Навигон с прямым запуском (без альтернативного меню) или ?
bosaxel
хоть как его запускай все равно кнопка его выбивает . хоть с сд хоть с меню хоть скриптом. видать в ехе что то совпадает с бекером

Навигон еще раз стартую следом все ок пока не нажмешь кнопку на приборе.
когда навигон включен то при нажатии просто выбивает . когда навигация навигирует с маршрутом то вылет уже с ошибкой.
...........................................................................
....................................................
кнопка возврата меню и выключения бекера. ошибка точь такая же когда поменяешь хартварелайер. кнопка также закрывает прогу навигон. но когда он навигирует то закрывает с ошибкой кликабельно
код кнопки
Back = 196
Norm
Ты ведь сам по Бекерам cпец и наверняка какой процесс она запускает.
Что делает эта кнопка со своей нави-программой?

Скрипт сделать можно, но нужно точно знать, что сделать дадо с какой программой или процессом.

Код кнопки не нужен, МортСкрипт с ними не работает.
Предпологаю, что "под кнопкой" возможно висит какой-то процесс - утилита упровляющая некоторыми функциями нав-программы.
Возможно и другое. Не держа в руках трудно сказать.
Выясни точно что как называется и где лежит и тогда можно будет что-то пробовать.
А по той инфо, что ты дал ни к чему прицепиться даже нельзя.
bosaxel
исправлено
все получилось . а спрашивал потамучто со скриптами в первый раз. методом тыка. ну конечно прочитал темку сперва
Norm
Надо, чтоби и MortScript.exe с скрипром тоже переносился на навигатор и запускался там. Вот он то и должен удалить Авторун с СД.
По другому не получится, поскольку он сам запущен с и не сможет сам себя удалить.
Попробуй вначале сам, если не получится, то скинь мне скрипт, я доделаю.
bosaxel
о сделал сам все заработало. просто навигатор нужно 2 раза выключить и включить 1 раз чтоб инсталил второй раз через 1 мин или 30 сек . чтоб уже работал. запись одна была неправильная
Norm
Мда, сложновато

В скрипте я не увидел запуска второго скрипта (который удаляет Autorun)
И не понял зачем перегружать
bosaxel
а зачем второй скрипт? главное что авторун удоляется и этим скриптом! . а выключать после, для того чтоб прога уже стартовала, иначе только картинка лого!

можно конечно и ручками все сделать . без скрипта. но сам понимаешь он обязателен для (чайников и блондинок. (не в обиду сказано )).

переделал теперь выкл и вкл не нужен.

да и еще вапросик . как то можно добавить к этой записи еще запись каторая выведет на экран процент копирования. чтоб бежали цифры от 1% до 100%
возможно ли это?

XCopy ("\Storage Card\MNAV\*.*" , "\My Flash Disk\MNAV\", 1, 1)
Norm
Это выполнимо, но сделать это тебе будет не просто.
Надо использовать команды для определение размера дискового пространства (занятого и свободного) перреложить это на проценты и сделать что бы скрипт проверял их значения, ну например, каждую секунду. Но с отображением этого дела, как бы ты это видеть хотел, не получится. Только если через статусмесаге, но с процентами это не будет красиво. Эта не плохо выглядит, когда надо показать некий ЛОГ в режиме он-лайн.

Как бы это сделал я "дёшево и сердито", я бы рядом полдожил скрипт в котором находилось бы одно единственное сообщение
Message ("Идет копирование файлов, ^NL^ пожалуйста подождите.....")
Этот скрипт запускается перед или в процессе копирования, а по завершению завершал бы принудительно этот скрипт (если конечно сам пользователь уже не закрыл это сообщение).

P.S.
В твоем скрипте имеется много пауз ожидания
о необходимости которых не берусь судить, но одну я бы точно убрал
PlaySound("\Storage Card\RING.wav")
Sleep (200)
Run ("\My Flash Disk\MNAV\Shell.exe")

Пауза не большая, но она некчеу, поскольку пока файл не проигрался до конца, следующая команда выполняться не будет и эта естественная пауза сама по себе намного дленнее чем 200 милисекунд.
bosaxel
спс. тогда оставлю как есть и стеру эту паузу. думаю можно примерно прикинуть сколько идет копирование и выставить паузу немного дольше его.