【问题标题】:How Do I Programmatically Open and Close a Specific Microsoft PowerPoint Mobile File/Presentation?如何以编程方式打开和关闭特定的 Microsoft PowerPoint Mobile 文件/演示文稿?
【发布时间】:2011-06-13 19:26:58
【问题描述】:

我正在帮助一位朋友进行项目/实验。任务是在 PDA 上重复打开和关闭各种应用程序数百次,并记录电池的消耗情况。然后重复实验,但下一次已经安装了杀毒软件,估计是在后台运行;再次在这里,应用程序被打开和关闭并记录电池消耗。 PDA 使用的是 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. 这第三个不是真正的问题,而只是提示解决方案/问题:如果我在台式计算机上遇到问题,迫使我创建解决方法,我会在我想要的特定 PowerPoint 文件中编写一个小型 VBA 程序打开,这将加载文件(PowerPoint Mobile 的目的似乎只是执行演示文稿,而不是打开桌面版 PPT 时看到的内容),然后自行关闭,因为在这种情况下,我仍然可以从控制程序,即:打开应用程序,然后等待它关闭。此外,我还要补充一点,我对 Microsoft Office Mobile 和 PDA 知之甚少。
  4. 这里还有一些观察结果。我想也许我可以执行一个捷径,但我被告知那行不通。最后一点,即使存在这样的解决方法,GetProcesses() 方法在 Compact Framework 中也不可用。我可以在 PDA 上发送操作系统命令吗?例如,在台式计算机上,我可以通过“任务列表”访问正在执行的进程。好的,我说完了。

【问题讨论】:

    标签: windows-mobile compact-framework powerpoint .net-3.5


    【解决方案1】:
    1. 由于您尝试以与 Word Mobile 和 Excel Mobile 相同的方式传递参数,但在 PowerPoint Mobile 中失败,因此逻辑推断是不支持,命令行参数不受支持。这假设您已经正确地完成了代码(您没有显示),但是由于调用 Process.Start 非常简单,并且您已经让它适用于其他应用程序,我假设您在这里也得到了它。
    2. 没有以任何方式记录任何 Pocket Office 应用程序。我们确实知道它们没有任何自动化接口或 API,所以如果命令行参数没有做任何事情,除非你想破解 SendMessage 调用来模拟单击菜单项和输入文件名。如果绝对需要打开文件,那可能是我接下来要尝试的方法。
    3. Pocket Office 不支持 VBA/脚本,因此这不是设备上的选项。
    4. 快捷方式与使用命令行调用应用程序相同。两者都有效地做同样的事情。您可以通过 toolhelp API 获取进程列表,但它不会让您对这些进程进行任何控制(除了杀死它们,您已经可以使用 Process.Start() 返回的 Process 实例来执行此操作

    【讨论】:

    • 我是否认为过去似乎仅在单个文件名中工作的 OpenNetCF 代码最终将其作为命令行参数传递,因此您也不会好过。
    【解决方案2】:

    我相信智能设备框架曾经包含两种不同的方式来实现问题 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 并从您的项目中调用它们。

    希望这在某种程度上有所帮助

    【讨论】:

      猜你喜欢
      • 2014-12-10
      • 2010-10-03
      • 1970-01-01
      • 2013-12-14
      • 1970-01-01
      • 2011-04-02
      • 2023-02-24
      • 2023-03-29
      • 1970-01-01
      相关资源
      最近更新 更多