2012-12-21 19 views
2

我想從我的C++應用程序中調用MS PowerPoint Viewer可執行文件(PPTVIEW.exe)。C++:查找MS PowerPoint Viewer的安裝目錄

我不想問安裝MS PowerPoint查看器的用戶。我相信,這不是專業的,而是依靠用戶做出適當的投入。相反,我希望能夠自己識別安裝目錄的位置。

例如,MS PowerPoint 2007中查看器的默認位置是:

  • C:\ Program Files文件\的Microsoft Office \ OFFICE12 \ PPTVIEW.exe

這當然不一定總是如此,特別是不同的版本(2003,2007,2010)有不同的位置。

您是否建議請如果MS PowerPoint查看器根本沒有安裝,哪裏可以找到正確的路徑,更好的辦法是能夠識別?

註冊表中必須有東西,但哪個鍵是正確的?

我使用:

  • 非託管C++
  • 需要與WinXP的兼容
  • 應當與機器人32和64位操作系統兼容
  • 應該能夠識別PowerPoint播放器的位置(包括)

謝謝。

+1

你真的需要瀏覽器應用程序的位置,或者你寧願要打開與觀衆相關的文件。如果後者是你最終想達到的目標,你可以使用[ShellExecute](http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153.aspx),它可以爲你做所有重要的事情。此外,它還尊重用戶設置針對特定文件類型啓動的應用程序。 – IInspectable

+0

@Tim,你好,謝謝你的輸入。我通過各種參數通過命令行來控制PowerPoint查看器。我需要能夠按需要殺死PowerPoint Viewer進程,並且需要能夠播放文件列表或單個文件。如所須。由於這些以及更多原因,我需要訪問可執行文件,因此我可以使用PowerPoint Viewer命令行參數。再次感謝您的意見。 –

回答

-3

GetFullPathName()... here ..應該這樣做。

+0

嗨。謝謝你的回答。不幸的是,GetFullPathName()從提供的文件名和當前目錄中生成完整的文件路徑。 ** GetFullPathName **將指定的文件名附加到當前目錄的名稱。例如,如果指定文件「hello.txt」,並且當前目錄爲「C:\ My Documents \ Junk」,則生成的文件名爲「C:\ My Documents \ Junk \ hello.txt」。該字符串被放入作爲lpBuffer傳遞的字符串中。如果發生錯誤,該函數返回0,或者如果成功則返回最終字符串的長度。 –

+0

-1。這與所問的問題無關,並且只發佈一個鏈接並且「應該訣竅」不是一個答案。 –

0

最好的解決方案,到目前爲止,我發現通過讀取以下注冊表項搜索在註冊表中的相應的路徑:

  • HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的Windows \ CurrentVersion \ App路徑\ pptview.exe

上面的關鍵字給了我安裝PowerPoint Viewer的位置。但是,我不知道此密鑰是否存在於安裝了PowerPoint Viewer的每個工作站中。

0

如果您將問題更改爲「我想在C++應用程序中以幻燈片模式顯示幻燈片」。那麼通過查詢已註冊的文件處理程序並使用適用的COM對象可以很容易地實現這一點。

下面的註冊表項將存在,如果有註冊的擴展處理器:

HKEY_CLASSES_ROOT\.pptx\