Как программно открыть и закрыть определенный файл / презентацию Microsoft PowerPoint Mobile? - PullRequest
2 голосов
/ 22 января 2011

Я помогаю другу с проектом / экспериментом. Задача состоит в том, чтобы многократно открывать и закрывать различные приложения на КПК сотни раз и регистрировать расход батареи. Затем эксперимент повторяется, но на этот раз антивирусное программное обеспечение установлено и работает, по-видимому, в фоновом режиме; здесь снова открываются и закрываются приложения, и записывается расход батареи. КПК использует Windows Mobile 6. Задача открытия и закрытия приложений была автоматизирована с помощью программы, написанной на .NET Framework Compact Edition 3.5. Программа использует компонент System.Diagnostics.Process для запуска и закрытия приложений. Одним из требований является открытие файлов в наборе приложений Office Mobile.

Итак, Word Mobile открывает некоторый файл DOC, а Excel Mobile открывает что-то. Это достигается путем передачи аргументов через Process StartInfo.Arguments. Это работает для Word и Excel, но не работает для PowerPoint; безусловно, PowerPoint открывается, но, похоже, не реагирует на аргументы, переданные через StartInfo.Arguments (даже если аргументы преднамеренно неверны, например: вам не выдается предупреждение, если вы отправляете путь к файлу, который не существует).

Вот вопросы:

  1. Может ли PowerPoint Mobile открывать презентацию, передавая аргументы через Process StartInfo.Arguments?
  2. Если нет, какие существуют другие варианты, так что PowerPoint Mobile можно контролировать в этом отношении (в частности, чтобы его можно было открывать, а затем отключать повторно)?
  3. Этот третий не вопрос, а просто наводит на мысль о решении / вопросе: если бы я столкнулся с проблемами на настольном компьютере, вынуждая меня создать обходной путь, я написал бы небольшую программу VBA в конкретном файле PowerPoint, который я хочу открыть, что приведет к загрузке файла (цель PowerPoint Mobile, по-видимому, состоит только в том, чтобы выполнить презентацию в отличие от того, что можно увидеть, если открыть настольную версию PPT), а затем отключиться, потому что в этом случае я все еще могу выполнять две функции из управляющая программа, то есть: откройте приложение и дождитесь его закрытия. Дополнительно добавлю, что я очень мало знаю о Microsoft Office Mobile и КПК.
  4. Вот еще несколько замечаний. Я подумал, что, возможно, я смогу выполнить ярлык, но мне сообщили, что это не сработало. И последнее замечание: даже если такой обходной путь существует, метод GetProcesses () недоступен в Compact Framework. Могу ли я отправлять команды операционной системы на КПК? Например, на настольном компьютере я могу получить доступ к выполняющимся процессам через «список задач». Хорошо, я закончил.

Ответы [ 2 ]

0 голосов
/ 23 июня 2011
  1. Поскольку вы пытались передать аргументы так же, как вы делали это для Word Mobile и Excel Mobile, и это не помогло PowerPoint Mobile, логический вывод заключается в том, что no, параметры командной строки не поддерживаются. Это предполагает, что вы сделали код (который вы не показывали) правильно, но так как вызов Process.Start довольно прост, и вы работаете с другим приложением, я предполагаю, что он у вас тоже есть.
  2. Ни одно из приложений Pocket Office не задокументировано. Мы знаем, что у них нет никаких интерфейсов автоматизации или API, поэтому, если аргумент командной строки ничего не делает, вам не повезет, если вы не захотите взломать вызовы SendMessage, чтобы имитировать нажатие элементов меню и ввод имени файла Если открытие файла абсолютно необходимо, возможно, я выберу следующий путь.
  3. В Pocket Office нет поддержки VBA / сценариев, поэтому на устройстве это невозможно.
  4. Ярлык будет идентичен вызову приложения из командной строки. Оба эффективно делают одно и то же. Вы можете получить список процессов через API-интерфейсы панели инструментов, но он не даст вам никакого контроля над этими процессами (кроме как для их уничтожения, что вы уже можете сделать с экземпляром Process, возвращаемым Process.Start()
0 голосов
/ 23 июня 2011

Я полагаю, что среда интеллектуальных устройств использовала два различных способа решения вопроса 2, но они были удалены, когда компактная структура получила возможность вызывать "System.Diagnostics.Process.Start" в одном, если она будет выпущена позднее.

Однако для компактной интегрированной версии Process.Start требуются два параметра (exe, имя файла), которые вы упомянули выше, и их нельзя вызвать напрямую, используя только имя файла. Хотя версия компактного фреймворка была не так полезна, как код фреймворка интеллектуального устройства, этого было достаточно, чтобы привести к его удалению из основного проекта.

Более старая версия каркаса смарт-устройства позволяла напрямую обращаться к имени файла и использовала pinvoke для запуска файла, проверяя реестр на наличие связанной программы.

OpenNETCF.WinAPI.Core.ShellExecute("\\My Documents\\Test.pxl", "");

или я считаю, что альтернативным способом было позвонить ..

OpenNETCF.Diagnostics.Process.Start("\My Documents\Test.pxl")

Второй метод все еще был доступен в версии 1.4, исходный код которой все еще доступен. Вы можете скачать их с OpenNetCF (внизу страницы) и извлечь код, который они использовали, или даже самостоятельно скомпилировать dll и вызвать их из вашего проекта.

Надеюсь, это поможет каким-то образом

...