2011-01-22 69 views
2

我正在幫助朋友進行項目/實驗。其任務是在PDA上重複打開和關閉各種應用程序數百次,並記錄電池的消耗量。然後重複這個實驗,但是下一次安裝了反病毒軟件,它大概是在後臺運行的;這裏再次打開和關閉應用程序並記錄電池消耗。 PDA使用的是Windows Mobile 6.打開和關閉應用程序的任務已通過.NET Framework Compact Edition 3.5編寫的程序自動完成。該程序使用System.Diagnostics.Process組件來啓動和關閉應用程序。其中一個要求是在Office Mobile應用程序套件中打開文件。如何以編程方式打開和關閉特定的Microsoft PowerPoint移動文件/演示文稿?

因此,Word Mobile中打開一些DOC文件和Excel Mobile中打開的東西。這是通過通過Process StartInfo.Arguments傳遞參數來完成的。它適用於Word和Excel,但它不適用於PowerPoint;可以肯定的是,PowerPoint會打開,但不會對通過StartInfo.Arguments傳遞的參數做出反應(即使參數有目的地不正確,例如:如果發送不存在的文件路徑,也不會提示您。

這裏有幾個問題:

  1. 燦PowerPoint Mobile中打開經由過程StartInfo.Arguments傳遞參數介紹?
  2. 如果不是,還有哪些其他選項可以在這方面控制PowerPoint Mobile(特別是,可以打開然後重複關閉)?
  3. 這第三個是不是一個真正的問題,而只是暗示性的解決方案/問題:如果我遇到一臺臺式電腦迫使我建立一個變通方法上的問題,我會在特定的PowerPoint文件我想要寫一個小VBA程序打開,這將加載文件(PowerPoint Mobile的目的只是爲了執行演示,而不是打開桌面版本的PPT時會看到的內容),然後關閉它,因爲在那種情況下,我仍然可以執行兩個函數控制程序,即:打開應用程序,然後等待,直到它關閉。另外我會補充一點,我對Microsoft Office Mobile和PDA知之甚少。
  4. 這裏有幾個意見。我想也許我可以執行一個捷徑,但我被告知這並不奏效。最後一點,即使存在這樣的解決方法,Compact Framework中也無法使用GetProcesses()方法。我可以在PDA上發送操作系統命令嗎?例如,在臺式計算機上,我可以通過「任務列表」訪問正在執行的進程。好的,我完成了。

回答

0
  1. 既然你已經嘗試傳遞參數在你做的Word Mobile和Excel Mobile中以同樣的方式,它的利用PowerPoint Mobile失敗,邏輯推理是沒有,命令-line參數不受支持。這假定你已經完成了正確的代碼(你沒有顯示),但是由於調用Process.Start非常簡單,而且你已經爲其他應用程序工作,所以我假設你也已經在這裏了。
  2. 沒有任何Pocket Office應用程序以任何方式記錄。我們知道他們沒有任何自動化接口或API,所以如果命令行參數沒有做任何事情,那麼除非您想在SendMessage調用中模擬點擊菜單項並且輸入文件名稱。如果打開一個文件是絕對必要的,那可能是我下一次嘗試的路線。
  3. 掌上營業廳沒有VBA /腳本支持,所以這不是在設備上的選項。
  4. 甲shorcut將是相同的調用具有命令行的應用程序。兩者都有效地做同樣的事情。您可以通過toolhelp API獲取進程列表,但不會讓您對這些進程有任何控制(除了殺死它們,您已經可以通過Process.Start()
+0

返回Process實例了嗎?那麼以前看起來只用單個文件名工作的OpenNetCF代碼最終會將其作爲命令行參數傳遞,因此你並沒有更好。 – fluent 2011-06-23 21:11:10

0

我相信智能設備框架曾經包含兩種不同的方式來實現問題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並從項目中調用它們。

希望這有助於以某種方式

相關問題