DSO Framer ActiveX 文檔控件示例示例控件寫入在 Visual C++6.0 中使用标準的 C++。 重新它可以編譯在 Visual Studio.NET 2003 或 Visual Studio 2005 而無需進行修改。 版本 1.3 是所有的目前版本的 Microsoft Office,包括 Microsoft Office 2007 相容的。 為那些想而不必重新編譯該項目示範該控件提供了示例的釋出版本。 顯示如何從 HTML 使用該控件在 WebTest 檔案夾中提供一個 Web頁面的示例。 其可打開 Office 文檔在用戶端計算機上,必須安裝 Office 2000、 Office XP、 Office 2003 或 Office 2007。運作該示例要運作示例,請按照下列步驟操作:将示例檔案解壓縮到您選擇的一個檔案夾。在 Internet Explorer 中打開 Webtest.htm (從 WebTest 檔案夾中)。 如果系統提示您選擇 是 以啟用 ActiveX 控件的腳本。 如果要運作 Windows XP SP 2,Internet Explorer 可能會暫時阻止對 Web頁的活動内容。 可以選擇以允許通過單擊資訊欄上的内容。 有關更多資訊欄請請參閱以下 Microsoft 知識庫中的文章:
843017 在 Windows XP SP 2 中,Internet Explorer 資訊欄說明
看到 Web 頁中的控件時, 單擊控件。在 檔案 菜單上單擊 建立 以添加到控件的一個新文檔。代碼使用控件的解決方案該控件是非常自定義的。 您可以更改該控件元素的任何配色方案以及确定邊框類型和自定義的題注。 這些可以根據需要設定在運作的時或設計時。
此控件還支援一個名為可以擷取對嵌入對象的 IDispatch 接口的引用的 ActiveDocument 屬性。 從此接口可以自動執行要執行的任務、 編輯在的文檔的部分或收集有關哪些使用者已添加或删除的資訊對象。 是例如如果必須打開一個 Word 文檔,您可以使用類似于以下操作來添加文本的行的代碼:
Dim oDoc As Word.Document
Set oDoc = DsoFramer1.ActiveDocument
oDoc.Content.Text = "This was added by Automation"
控制對象,而該對象嵌入程式能夠是非常強大。
注意 : 從 HTML 腳本控件在 Web 上的自動化可能向使用者,非常危險,是以該控件已故意被标記為不"可安全執行腳本"。 可能會提示使用者使用控件在網頁中的使用者才使用此控件啟用腳本。 這是為适當的安全性必需的。
建立新文檔該元件可以在系統上建立為注冊的任何 ActiveX 文檔類型的新文檔。 使用者可以使用 建立 對話框,從菜單的内置功能或使用您提供建立新文檔的自定義函數。
在控件上的 CreateNew 方法可以生成自己的方法以啟動新文檔。 該方法将采用到 Office 模闆檔案的程式設計辨別符 (ProgId) 要啟動,ActiveX 文檔類型的或者路徑。 例如,您可以使用下面的 Office ProgId
Excel Spreadsheet "Excel.Sheet"
Excel Chart "Excel.Chart"
PowerPoint Presentation "PowerPoint.Show"
Project Database "MSProject.Project"
Visio Drawing "Visio.Drawing"
Word Document "Word.Document"
如果 ProgId 或模闆不能識别或無法啟動伺服器,您收到在"自定義錯誤資訊"部分讨論的标準錯誤資訊之一。。打開的文檔可以同時打開和編輯位于本地驅動器、 通用命名約定 (UNC) 共享或 Web 檔案夾的 Office 文檔。 一種标準 打開 對話框可以顯示使用者或調用代碼的已提供,使使用者可以查找并選擇要打開的檔案。 可以直接調用 Open 方法,并為要打開一個特定檔案的控件。
打開 将是一個的合格的檔案路徑或一個 URL 到遠端 Web 伺服器上的一個檔案。 該控件将嘗試獲得對該檔案的寫通路,并使其鎖定,無法編輯除非為 ReadOnly 參數傳遞 True。 是例如下面的代碼打開本地檔案,并編輯其上保持鎖:
DsoFramer1.Open "C:/TestBook.xls"
如果要打開的不與相關聯的 Office 應用程式,但在 Office 加載的檔案,您可以在 Open 方法中指定備用的 ProgId。 是例如在 Word 中打開純文字檔案,您可以使用類似于以下内容的代碼:
DsoFramer1.Open "C:/Plain.txt", , "Word.Document"
如果您使用 URL 組合這一功能,可以打開生成的 HTML 流式處理從 ASP 檔案,并使其顯示為内部的 Excel 的資料使用類似下面的代碼:
DsoFramer1.Open "https://secureserver/test/mytest.asp?id=123", True, _ "Excel.Sheet", "MyUserAccount", "MyPassword"
</a0>-使用者可以編輯結果并将檔案儲存為磁盤上的本地檔案或者将該檔案儲存到該伺服器上,為 Web 檔案夾中的新檔案。
此外,您可以使用 Open 方法以建立和顯示通過自動化建立一個文檔的副本。 例如,下面的代碼将建立一個新的 Word 文檔,然後顯示 it.
Dim oWordApp As Object
Dim oWordDoc As Object
Set oWordApp = CreateObject("Word.Application")
Set oWordDoc = oWordApp.Documents.Add
oWordDoc.Content.Text = "Hello World"
DsoFramer1.Open oWordDoc
儲存文檔若要儲存文檔,可以使用菜單,或調用 Save 方法。 Save 方法可同時為 儲存 一個簡單的指令以及作為一個 另存為 指令根據是否傳遞第一個參數的檔案位置。 如果目前的檔案打開隻讀的并且不執行指定儲存位置,将隻讀的發生錯誤。 有關詳細資訊,請參閱在"自定義錯誤消息"部分。
還可以儲存到 Web 檔案夾在遠端伺服器上如果該伺服器的 HTTP 支援 Microsoft FrontPage Server Extensions (FPSE) 或 Web 分發創作和版本控制 (WebDAV) 協定擴充。 下面的代碼示範一個儲存到遠端檔案伺服器的新檔案:
DsoFramer1.CreateNew "PowerPoint.Show" ' Let user edit the document, then save it. DsoFramer1.Save "http://myserver/mypresentations/test.ppt"
按預設,如果給定的位置已存在檔案您收到的錯誤資訊。 但是,通過将 OverwriteExisting 參數設定為 True,可以顯式判斷覆寫該控件。
處理您自己的檔案指令每次使用者從 檔案 菜單或項與檔案指令的工具欄上選擇某個項目,将 OnFileCommand 引發事件。 該事件可以重寫控件的預設行為,并提供自己的自定義操作和對話框以進行正常的檔案操作。
您可以啟用或禁用通過 EnableFileCommand 屬性的 檔案 菜單項。 是例如以下代碼将禁用該 列印 指令,然後陷阱列印對禁止使用者列印:
Private Sub Form_Load()
DsoFramer1.EnableFileCommand(dsoFilePrint) = False
End
Sub Private Sub DsoFramer1_OnFileCommand(ByVal Item As _ DSOFramer.dsoFileCommandType, Cancel As Boolean)
If Item = dsoFilePrint
Then MsgBox "You asked to print, but I won't allow it."
Cancel = True
End If
End Sub
顯示或隐藏在标題欄、 Menubar 或工具欄可以以程式設計方式顯示或标題欄、 菜單欄或工具欄通過設定隐藏這些參數為 True 或 False。 您嘗試限制使用者操作或控制文檔的外觀,而它嵌入時,這可能會很有用。
注意如果将 工具欄 設定為 False 并不是所有的工具欄可能被隐藏。 打開和關閉,工具可以切換,當這是可能,必須确定 ActiveX 文檔伺服器。 最好在打開或建立新文檔,以便在伺服器知道您的選擇時的初始嵌入之前設定此屬性。 請注意盡管所有的 Office 伺服器支援打開和關閉切換工具,某些第三方伺服器可能沒有。架構挂鈎政策為了在主機獲得或失去前狀态時,正确處理激活,ActiveX 控件,請使用架構挂鈎。 情況預設,建立控件時設定此挂鈎。 在某些情況下,尤其是當該控件用于從多線程的 UI 主機,或者當控件嵌套在容器控件如次時在.NET WinForm 應用程式在控件的父級中頁籤頁建立不會是挂起運作時該控件在正确視窗。 在這的種情況下您可以使用 FrameHookPolicy 屬性重置此挂鈎,在更合适的時間。 是例如如果您建構.NET WinForm 解決方案,将在 FrameHookPolicy 屬性設定為 dsoSetOnFirstOpen 屬性視窗中。元件激活政策示例控件可以在指定的主機應用程式中支援其自身的多個執行個體。 但是,隻有一個控件處于活動狀态在給定的時間。 這是 ActiveX 文檔承載的要求。 若要處理單個主機中的多個執行個體,控件注冊使用元件管理器。 這将允許該元件管理器跟蹤活動控件。 使用 ActivationPolicy 屬性若要控制在元件的更改處理嵌入的對象的方式。 ActivationPolicy 屬性可以設定一個或多個定義 dsoActivationPolicy 枚舉的位标志。自定義錯誤消息除了标準 COM 錯誤資訊控件可以傳回下列自定義的錯誤資訊之一
0x80041102 The ProgID/Template could not be found or is not associated with a COM server.
0x80041103 The associated COM server does not support ActiveX Document embedding.
0x80041104 The command is not supported by the document server.
0x80041105 Unable to perform action because document was opened in read-only mode.
0x80041106 The Microsoft Internet Publishing Provider is not installed, so the URL document cannot be open for write access. 0x80041107 No document is open to perform the operation requested.
0x80041108 Cannot access document when in modal condition. 0x80041109 Cannot Save file without a file path.
使用、 通訊組和支援的通知Microsoft 提供僅,用于說明的程式設計示例不附帶任何明示或默示的保證。 這包括,但不限于适銷性或針對特定用途的适用性的默示保證。 本文假定您熟悉所示範的程式設計語言和用于建立和調試過程的該工具。 Microsoft 支援工程師可以幫助解釋某個特定過程的功能。 但是,它們将不修改這些示例以提供額外的功能或建構過程以滿足您的特殊需求。