Программы для Windows Mobile

Загрузка приложений с переводом в фоновый режим
Запуск программ для Pocket PC на WM5 for Smartphone
Установка поддержки .NET Compact Framework 2.0 SP1

Программы на другие темы можно посмотреть здесь:
Программы для Windows и Office
Рентгеноструктурный процессор RTP
Архив программ для Windows
Архив DOS-программ
Исправления к играм Нивала


Загрузка приложений с переводом в фоновый режим

В операционной системе Windows Mobile нет лёгкой возможности запустить программу, не выводя её экрана. В обычной Windows видом окна можно управлять с помощью настройки в PIF-файле: запустить ли программу в обычном окне (normal window), в полноэкранном (maximized) или «свёрнутом» (minimized) режиме. LNK-файлы в Windows Mobile такого сервиса не предоставляют, и если в программе специально не предусмотрена возможность запуска в «свёрнутом» виде, её нужно переводить в фоновый режим вручную с помощью кнопки закрытия окна в Pocket PC или клавишей «назад» в телефонах.

Информационный экран программы

Программа «Load» исправляет этот недостаток. Она позволяет загрузить приложение, указанное в командной строке, и «свернуть» его экран без взаимодействия с пользователем. Это может быть удобно для программ, которые должны автоматически загружаться при запуске ОС, или для программ с «отложенным» взаимодействием. «Load» из-за простоты не имеет пользовательского интерфейса, кроме экранов с информацией и сообщением об ошибке. После того как приложение загружено и запущено, программа «сворачивает» его и восстанавливает либо экран предыдущей программы, либо рабочий экран ОС, если запущенных раньше программ не было.

«Load» была проверена в Windows Mobile 5.0 for Smartphone (процессор ARM), но в принципе может работать и в других версиях WM, поскольку использует лишь базовые функции WinCE API. Она не обращается к Registry, и её можно разместить в любом каталоге устройства. Учтите, что для её работы требуется разблокировка ОС (unlock), позволяющая запускать программы без цифровой подписи.

Параметры командной строки:

"...\load.exe" [-hide] "...\program.exe" [параметры]

Параметр -hide позволяет скрыть экран загружаемой программы вместо «сворачивания», что делает её невидимой в обычном диспетчере задач (а также препятствует выводу экрана при повторном запуске программы — используйте с осторожностью!). Кавычки нужны лишь в случае, если путь содержит пробелы (как это принято в Windows). Командную строку следует записать в соответствующий LNK-файл.

Ниже приводится два примера загрузки приложений с разными вариантами размещения load.exe (только для иллюстрации кавычек). Число в начале строки указывает длину командной строки, начиная с первого символа после #, как принято в Windows Mobile.

Lowlight.lnk размещается в каталоге \Windows\Startup и при запуске ОС загружает программу, уменьшающую подсветку экрана для экономии заряда аккумулятора (её можно найти на форуме SPV Developers):

79#"\Program Files\Tools\load.exe" "\Program Files\Tornado Low Light\lowlight.exe"

BBC.lnk загружает карманную версию Internet Explorer, который в свою очередь соединяется с Сетью и загружает страницу новостей BBC (позже можно переключиться в экран IE и прочитать новости):

89#"\Program Files\Tools\load.exe" \Windows\iexplore.exe http://news.bbc.co.uk/text_only.stm

При запуске без параметров load.exe выводит информационный экран с краткой подсказкой.

load.cab4 235 Программа Load, версия 1.01 от 7.04.2006
load102b.cab7 773 Программа Load, версия 1.02 beta от 11.02.2007

Запуск программ для Pocket PC на WM5 for Smartphone

Обладатели мобильных телефонов с Windows Mobile Smartphone edition часто бывают разочарованы тем, что основная масса приложений, написанных для Pocket PC, отказывается запускаться на телефоне, несмотря на аналогичный процессор и практически такую же операционную систему (особенно это относится к Windows Mobile 5.0 и телефонам с экраном QVGA). На самом деле различия между «телефонной» и «карманной» платформами довольно велики. Прежде всего, у карманных компьютеров есть сенсорный экран, которого нет у современных (2005-2006 гг) мобильных телефонов, поэтому программы для Pocket PC и Smartphone рассчитаны на разные способы взаимодействия с пользователем. Пример — программу Pocket ICQ 1.0 beta (сейчас она убрана с сервера ICQ и её можно найти только в архивах) в принципе можно установить на WM5 Smartphone, подключиться к серверу, увидеть свой список пользователей, но реально работать с программой невозможно даже имея эмулятор курсора. Кроме того, у карманных компьютеров обычно более мощный процессор, больше ОЗУ, более широкий набор аппаратных интерфейсов, наконец, больший набор системных библиотек. В результате достаточно большая часть программ для Pocket PC работать на телефонах не способна, даже если программу удалось установить — в этом случае остаётся лишь надеяться на разработчиков, способных исправить код и интерфейс...

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

1. Использование Windows Mobile Developer Power Toys

Этот набор утилит для разработчиков может быть полезен и обычным пользователям. Его можно загрузить на странице Microsoft (см. ссылку «WindowsMobilePowerToys.msi» в нижней части страницы). После его установки в меню Start создаётся ссылка на программу ActiveSync Remote Display и каталог, где находятся остальные утилиты (они нужны реже). Программа Remote Display позволяет через работающую связь по ActiveSync выводить содержимое экрана устройства на экран настольной Windows и выполнять некоторые операции с помощью мыши. К сожалению, текущая версия программы несколько устарела и не рассчитана на процессоры TI OMAP (они стоят в устройствах, выпускаемых HTC), поэтому для нормальной работы программы вначале необходимо вручную записать файлы cerdisp2.exe и KillProc.exe в каталог \Windows на устройстве. Файлы нужно найти в соответствующем каталоге программы:

...\ActiveSync_Remote_Display\devices\smartphone\wce400\armv4\

После этого программу ASRDisp можно запустить — несмотря на сообщение о неизвестном процессоре, она будет работать правильно. При её работе на верхней панели экрана устройства выводится цветная иконка, хорошо знакомая разработчикам программ для Windows Mobile. При закрытии программы источник данных на устройстве тоже закрывается и иконка исчезает после очередного обновления экрана.

Вы можете использовать мышь для активации полей ввода, нажатия кнопок, переключения закладок и работы с другими элементами интерфейса, выводимыми на экране (кроме верхней и нижней панели, которые не воспринимают «сенсорные» команды). В полях ввода можно выделять несколько символов подряд, сдвигая мышь при нажатом курсоре; при этом лучше смотреть на экран устройства, т.к. окно программы Remote Display обновляется с заметной задержкой. Из-за несоответствия шрифта и разметки экрана некоторые элементы управления могут частично выйти за пределы экрана, добраться до них можно с помощью джойстика, циклически пробегая по всем активным элементам интерфейса.

Управление через Remote Display позволяет пройти некоторые регистрационные экраны, которые не выводятся при последующем запуске, а также составить исходные списки данных. Если же курсор постоянно необходим для нормальной работы приложения, попробуйте использовать эмуляторы курсора для WM Smartphone edition — например, SPHelper (shareware). Существует и несколько freeware-версий эмуляторов, но у тех, что удалось найти и посмотреть автору, есть существенные недостатки, поэтому ссылки не приводятся. Возможно, со временем ситуация изменится к лучшему...

Если для работы настраиваемой программы необходимо подключиться к Сети, это можно сделать двумя способами: либо через ActiveSync, используя отдельное подключение к Сети настольного компьютера, либо связать мобильное устройство через Bluetooth, включить ActiveSync и подключиться к Сети на настольном PC через Bluetooth-модем (при связи по USB-кабелю одновременная работа модема и ActiveSync невозможна).

2. Исправление инсталлятора

Инсталляторы программы, написанных для Pocket PC, особенно для версий до WM5, используют установочные инструкции (скрипты) в двоичном формате, который несовместим с WM5 Smartphone edition — там принят более универсальный XML-формат. При попытке установить программу в виде exe-файла для устройства, подключенного по ActiveSync, или при запуске cab-файла, записанного непосредственно на устройство, выводится сообщение вида:

Installation of program.cab was unsuccessful. The installation file is not intended for this device.

Под program здесь и ниже подразумевается имя конкретной программы. Эта надпись может также выводиться при несоответствии версий ОС, записанных в скрипте (см. ниже). Далее вся работа будет идти с cab-файлом, поэтому если вы пробовали установить программу в виде exe-файла через ActiveSync, найдите извлечённый cab-файл в подкаталоге Microsoft ActiveSync или там, где его разместил инсталлятор.

В комплекте Windows Mobile Developer Power Toys есть программа GetDATInfo, которую можно найти в каталоге ...\Convert_PPC_DAT_to_SP_XML. Она создаёт инсталляционный файл в XML-формате из существующего cab-файла для Pocket PC:

getdatinfo program.cab

Чтобы обойтись без ввода путей к файлам, перепишите исходный cab-файл в каталог, где разместилась getdatinfo, и вызовите её с именем файла в командной строке. Результатом будет XML-файл с тем же именем; в дальнейшем его нужно переименовать в _setup.xml. К сожалению, getdatinfo не лишена недостатков. Во-первых, она не способна обрабатывать cab-файлы с дополнительной компрессией, а может только с несжатым форматом. В подобном случае необходимо распаковать исходный cab-файл и вновь собрать его с помощью программы cabarc с параметром -m none. Во-вторых, getdatinfo иногда пропускает данные из «двоичного» скрипта и создаёт неполный XML-файл, в результате часть данных приходится дописывать вручную. В любом случае, перед составлением исправленного инсталлятора необходимо просмотреть полученный XML-файл и убедиться, что он содержит корректные данные.

В первую очередь посмотрите строки с минимальной и максимальной версией ОС: минимальное значение должно быть меньше 5.0, а максимальное — не меньше 5.0 и не больше 10.0. Если это не так, замените обе строки на следующие:

<parm name="OSVersionMin" value="5.0" />
<parm name="OSVersionMax" value="5.99" />

Посмотрите, не пропущено ли в скрипте создание LNK-файла, т.е. ссылки для Start Menu, по которой вы сможете запустить установленную программу (это частая ошибка getdatinfo). Найдите несколько строк следующего вида (обычно этот блок размещается ближе к концу XML-файла):

<characteristic type="%CE11%" translation="install">
<characteristic type="MakeDir" />
<characteristic type="Program.lnk" translation="install">
<characteristic type="Shortcut">
<parm name="Source" value="%InstallDir%\program.exe" translation="install" />
</characteristic>
</characteristic>
</characteristic>

Значения параметров %CExx% можно найти на страницах MSDN. Если такого блока нет, добавьте создание ссылки в конец блока FileOperation, используя реальное имя вместо program (предполагается, что вы знакомы с форматом XML или XHTML):

<characteristic type="FileOperation">
[установка компонента 1]
[установка компонента 2]
...
[создание ссылки на программу]
</characteristic>

Если вы не добавляли в _setup.xml какие-либо новые блоки с инструкциями, а лишь исправили имеющиеся, то на этом работу с файлом можно завершить. Если же вы добавили новые инструкции или что-то удалили, необходимо исправить заголовок файла, где указаны: число рабочих каталогов, используемых при инсталляции; число создаваемых файлов; количество ключей в Registry, куда записываются данные; количество параметров в этих ключах; число ссылок на файлы программы. Например, так:

<parm name="NumDirs" value="2" />
<parm name="NumFiles" value="5" />
<parm name="NumRegKeys" value="0" />
<parm name="NumRegVals" value="0" />
<parm name="NumShortcuts" value="1" />

Наконец, необходимо включить полученный _setup.xml в инсталлятор. Если у вас нет полнофункционального архиватора, работающего с cab-форматом, можно воспользоваться программой Cabarc, которая входит в комплект утилит Cabsdk от Microsoft. Её лучше записать в один из каталогов, где по умолчанию производится поиск программ, например, в C:\WINDOWS. Распакуйте исходный cab-файл для Pocket PC в пустой каталог (это можно сделать с помощью cabarc или просто используя Explorer в Windows 2000/XP), добавьте туда _setup.xml и создайте комплект инсталлятора командой:

cabarc n program.cab *.*

Инсталлятор готов! Остаётся переписать его в свободное место телефона (например, в \Storage Card\Temp) и попробовать установить программу.

3. Примеры

Вы можете воспользоваться готовыми xml-файлами к нескольким программам для Pocket PC. Все они были успешно установлены на телефон и запущены, хотя следует иметь в виду, что часть программных функций, рассчитанных на управление с помощью сенсорного экрана или экранной клавиатуры, может быть доступна только через эмулятор или не работать вообще. Одна из частых проблем — «сворачивание» или закрытие программы по кнопке «Back» при попытке исправить текст в поле ввода. Обычно в этом случае приходится закрывать экран и входить в него заново, либо оставлять текст как есть (там, где ошибки не критичны).

Вначале вам нужно загрузить исходные cab-файлы по указанным ссылкам (программные файлы не выложены здесь, чтобы не нарушать права разработчиков). Если программа предлагается только в виде exe-файла для установки через ActiveSync, загрузите этот файл и запустите его на настольной машине, откажитесь от установки программы на устройство и найдите cab-файл в каталоге Microsoft ActiveSync (затем установку можно отменить и удалить распакованные файлы). После этого распакуйте cab-файл в пустой каталог, добавьте _setup.xml, взятый из приложенного ниже архива, и создайте новый cab-инсталлятор с помощью утилиты cabarc из комплекта Cabsdk.

Программа_setup.xmlПримечания
Minimo 0.016minimo16.cabWeb-браузер на основе технологии Mozilla, в состоянии разработки.

Установка поддержки .NET Compact Framework 2.0 SP1

Программирование в среде .NET становится популярным среди разработчиков программ для Windows Mobile из-за упрощения процесса разработки по сравнению с «классическим» C. Для запуска таких программ на устройстве требуется установка набора библиотек .NET. Его последнюю версию 2.0 SP1 можно загрузить на странице Microsoft. Однако этот инсталлятор содержит полный набор библиотек для каждого типа процессоров и ОС, в результате размер установочного файла составляет около 37 Мб. Пользователям приходится загружать все библиотеки, бóльшая часть которых им не понадобится. Полный список поддерживаемых процессоров, ОС и соответствующих инсталляторов можно посмотреть на странице corphelp.net.

Для Windows Mobile 5.0 (как Pocket PC, так и Smartphone) нужен файл NETCFv2.sp1.wm5.armv4i.cab размером около 2,2 Мб. Его можно загрузить прямо на устройство или вначале на настольную PC и затем через ActiveSync, наличие .NET на настольной машине не требуется.

Найти инсталлятор можно, например, здесь. Предыдущая версия 2.0 доступна здесь или здесь.