2012-07-30 89 views
1

如果DOC文件正在被MS Word打開,有沒有辦法讓外部程序獲取DOC文件的完整路徑?我試圖使用GetCommandLineA(),但它不會產生任何結果,只是「」C:\ Program Files \ Microsoft Office \ Office12 \ WINWORD.EXE「/ n/dde」。我還在http://www.withinwindows.com/2008/08/31/taming-microsoft-word-2007s-file-associations-and-document-windows-part-one/上看過一篇文章,但我不知道如何獲得DDE消息。你能告訴我怎麼樣?獲取打開的Word文檔的完整路徑

+0

你可以使用.Net/Office Interop嗎?或者是這個COM還是其他的東西? – JohnZaj 2012-07-31 12:37:19

回答

0

您需要獲取Word對象模型的鉤子(例如,通過.Net/Office Interop或直接通過COM)。一旦你有一個文檔的引用,使用它的FullName屬性。如果文檔可能通過服務器上的網絡或來自數據庫的網絡,則可能會在文件名中包含字符(例如「 - 」),這些字符對您下載到的任何平臺都是無效的。如果是這種情況,請根據平臺去除無效文件路徑字符的名稱。

有幾個防禦技術可以獲得這個名字。

+0

感謝您的回答。我設法做到了。 :) – anhldbk 2012-08-01 07:23:03

+0

最後一個提示:我遇到了Name和FullName屬性會返回空字符串或null的情況。最後,我認爲這歸結於微軟的問題,即將XSLT轉換應用於文檔會導致這些值被剝離(實際上是有道理的)。因此,如果有任何轉型業務正在進行:在進行任何處理之前,儘快在您的代碼中獲取文檔的名稱。 – JohnZaj 2012-08-03 03:04:38