共用方式為


關於 Microsoft Office InfoPath 主要 Interop 組件

Microsoft Office InfoPath 2007 應用程式是一種「元件物件模型」(COM) 應用程式,對外部自動化和做為 COM 介面的表單範本內所使用的指令碼,公開其程式設計介面。為了支援使用 Managed 程式碼語言 (例如 Visual C# 與 Visual Basic) 建立 InfoPath 方案,Office InfoPath 2007 安裝程式中的 [.NET 程式設計支援] 選項會安裝三個 Interop 組件。Interop 組件是 .NET 組件,可做為 Managed 與 Unmanaged 程式碼之間的橋梁,將 COM 物件成員對應至對等的 .NET Managed 成員。

由 InfoPath 安裝之三個 Interop 組件的檔案名稱分別如下:

  • Microsoft.Office.Interop.InfoPath.dll

  • Microsoft.Office.Interop.InfoPath.SemiTrust.dll

  • Microsoft.Office.Interop.InfoPath.Xml.dll

此主題討論透過 Microsoft.Office.Interop.InfoPath Interop 組件公開的物件模型,這個組件專門供外部自動化程式碼使用。如需有關 Microsoft.Office.Interop.InfoPath.SemiTrust 組件 (是專門用來撰寫和執行從 InfoPath 表單範本 (.xsn) 執行的 Managed 程式碼) 的詳細資訊,請參閱 InfoPath 2003 相容的物件模型 (英文)

重要安裝資訊

依據預設,Office InfoPath 2007 安裝程式的一般安裝選項,會在全域組件快取 (GAC) 中安裝 Microsoft.Office.Interop.InfoPath 組件,您可以在 C:\Windows\Assembly 資料夾中檢視其內容。此組件又稱為「Microsoft Office InfoPath 主要的 Interop 組件」,通常是與 Microsoft.Office.Interop.InfoPath.Xml 組件搭配使用,它也會安裝在 GAC 中,以便從使用 Managed 程式碼的外部應用程式將 InfoPath 應用程式自動化。如需關於 Microsoft.Office.Interop.InfoPath.Xml 組件的詳細資訊,請參閱關於 InfoPath XML Interop 組件

如果在 GAC 中看不見 Microsoft.Office.Interop.InfoPath 組件,您應該確認是否已正確地安裝 Office InfoPath 2007。只要在執行安裝之前,先安裝 .NET Framework 1.1 可轉散發套件 或 .NET Framework 1.1 軟體開發套件 (SDK),則在 InfoPath 的一般安裝中,安裝程式中 [.NET 程式設計支援] 選項會設定為 [從我的電腦執行]。如果在電腦上沒有這些 Interop 組件,則必須確認是否已安裝 .NET Framework 1.1,然後從 [控制台] 執行 [新增或移除程式],然後將 [Microsoft Office InfoPath] 的 [.NET 程式設計支援] 選項設為 [從我的電腦執行]。

如需下載 .NET Framework 1.1 可轉散發套件的詳細資訊,請參閱 .NET Framework 1.1 可轉散發套件 (英文)

Microsoft.Office.Interop.InfoPath 命名空間

雖然在 InfoPath 表單範本中為特定工作撰寫 Managed 程式碼的程序,與使用 COM 語言 (如 Microsoft Visual Basic 或 JScript) 執行相同的程式設計工作非常類似,但是當從 Microsoft Visual Studio 的 [物件瀏覽器] 檢視 Microsoft.Office.Interop.InfoPath 命名空間時,公開的物件模型會看起來比較複雜。這是因為與 .NET Framework 的互通性需要 COM 伺服器來公開其所有公用介面,以及 .NET Framework 本身所需要的某些其他結構。如需有關為何 Interop 組件所公開的物件模型看起來更複雜,及其複雜程度的詳細資訊,請參閱 InfoPath 2003 相容的物件模型主題的「COM 物件如何公開至 Managed 程式碼」。

使用 IntelliSense

本節中的範例是假設您已建立 Microsoft.Office.Interop.InfoPath 與 Microsoft.Office.Interop.InfoPath.Xml 組件的參考。如需有關如何建立參考以及其他外部自動化範例的詳細資訊,請參閱外部自動化案例與範例

在您於外部自動化程式碼中使用 Microsoft IntelliSense 陳述式完成之前,必須先為 Application 類別的執行個體建立一個物件變數,如下列程式碼所示。

Application myApp = 
    new Microsoft.Office.Interop.InfoPath.Application();
Dim myApp As Application = _
    New Microsoft.Office.Interop.InfoPath.Application()

在建立物件變數後,當您在變數名稱後面輸入一個半形句點時,會顯示一個下拉式清單供您選取 Application 類別成員。

若要使用 InfoPath 表單,請宣告 XDocument 類型的物件變數,然後從 Application 物件變數的 XDocuments 集合開啟表單以初始化物件變數,如下列程式碼所顯示。

XDocument myXDoc = myApp.XDocuments.Open(
    "c:\\temp\\Form1.xml",
    (int) XdDocumentVersionMode.xdFailOnVersionOlder);
Dim myXDoc As XDocument = myApp.XDocuments.Open( _
    "c:\\temp\\Form1.xml", _
    XdDocumentVersionMode.xdFailOnVersionOlder)

當您在變數名稱後面輸入一個半形句點時,將會顯示 IntelliSense 陳述式完成下拉式清單,其中包括 XDocument 類別的成員。

若要為使用 Microsoft Office 的 Microsoft XML Core Services (MSXML) 5.0 之表單使用基礎 XML 文件的內容,則必須建立 IXMLDOMDocument2 類型的變數,然後使用 XDocument 類別的 DOM 屬性,以指派表單的「XML 文件物件模型」(DOM) 給該變數。

IXMLDOMDocument2 doc= myXDoc.DOM as IXMLDOMDocument2;
Dim doc As IXMLDOMDocument2 = myXDoc.DOM

當您在變數名稱後面鍵入半形句點時,將會顯示 IXMLDOMDocument2 類別的 IntelliSense 陳述式完成下拉式清單,以便讓您利用 MSXML 5.0 使用 XML 文件。

使用類別庫參照文件

Microsoft.Office.Interop.InfoPath 命名空間類別庫參照文件的組織反映了 coclass 介面以及其實作之繼承介面之間的關係。這些主題的組織方式和撰寫指令碼的「InfoPath 物件模型參照」(屬於「InfoPath 開發人員參考」的一部份,此參考包括在 Office InfoPath 2007 中) 的組織方式相同。除了 ApplicationXDocument 介面的主題之外,所有的 COM coclass 介面主題都會對應至 InfoPath 指令碼參考資料中對等的「物件」與「集合」主題。例如,Microsoft.Office.Interop.InfoPath 命名空間參照文件中的「UIObject 介面」與「WindowsCollection 介面 」主題,會對應至「InfoPath 物件模型參照」指令碼參照中「UI 物件」與「Windows 集合」主題裡相同或相似的內容。

但是,在主題一開始的介面描述之後,連結至 coclass 介面成員的連結,會顯示空的主題。若要顯示 coclass 介面實作的成員清單,您必須開啟 coclass 繼承的最近介面主題,然後開啟其成員的表格。在 coclass 介面主題中的<註解>一節的開頭提供了繼承介面的連結。

當您在「Visual Studio 程式碼編輯器」中按 F1 時,也會出現類似的行為;但是當您叫用「F1 說明」時,會直接顯示成員的說明,因為您最常使用介面的這些成員。不過,從建立版本介面可以實作成員這件事,可能讓您在初次遇到這個狀況時感到混淆。例如,如果您輸入 myXDocument.UI.Alert 並將游標放置在 Alert 上,然後按 F1,會顯示標題名為「UI2.Alert 方法」的主題。這是因為 Alert 方法是 UI2 介面的成員實作。

傳遞選用參數給 InfoPath 物件模型成員

如果 InfoPath 物件模型成員含有選用參數,而且您未針對該參數指定值,則必須針對該參數傳遞 Type.Missing 欄位。如果在省略實際值時未能傳遞 Type.Missing 欄位,將會造成建置錯誤;無論是以 Visual C# 還是 Visual Basic .NET 所撰寫的程式碼,都會造成錯誤。例如,ViewObject 介面的 SelectNodes 方法包括兩個選擇性參數:varEndNode 和 varViewContext。當您沒有針對這兩個選擇性參數指定實際值時,程式碼行看起來應該如以下範例所示。

myXDocument.View.SelectNodes(group1, Type.Missing, Type.Missing);
myXDocument.View.SelectNodes(group1, Type.Missing, Type.Missing)

請參閱

概念

外部自動化案例與範例