如何以编程方式打开和关闭特定的Microsoft PowerPoint Mobile文件/演示文稿?

时间:2011-01-22 20:25:38

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

我正在帮助一个有项目/实验的朋友。任务是在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上发送操作系统命令吗?例如,在台式计算机上,我可以通过“任务列表”访问正在执行的进程。好的,我已经完成了。

2 个答案:

答案 0 :(得分:0)

我认为智能设备框架过去常常包含两种不同的方法来实现问题2,但是当紧凑型框架能够在一个后期版本中调用“System.Diagnostics.Process.Start”时,它们就被删除了。 / p>

然而,Process.Start的紧凑框架版本需要您在上面提到的两个参数(exe,filename),并且不能仅使用文件名直接调用。尽管紧凑的框架版本没有智能设备框架代码那么有用,但它足以导致它从主项目中删除。

旧版本的智能设备框架允许直接调用文件名,并使用pinvoke启动文件,检查相关程序的注册表。

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

或者我认为另一种方式是打电话..

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

第二种方法仍然可以在版本1.4中使用,其源代码仍然可用。您可以从OpenNetCF(页面底部)下载它们并提取它们正在使用的代码,甚至可以自己编译dll并从项目中调用它们。

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

答案 1 :(得分:0)

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