摘要:了解 Microsoft C# 和大型復雜的 COM 服務器之間的 COM 互操作性。本文介紹了如何准備 Office XP COM 對象以及如何在 C# 程序中使用這些對象,同時還提供了一些提示,幫助您理解為何某些操作必須通過特定方法才能實現。
簡介
Microsoft® Office XP 最強大的功能之一,就是其組件(例如 Microsoft Excel 2002 和 Microsoft Word 2002)以組件對象模型 (COM) 接口的形式公開其功能。通過 Microsoft Visual Basic® 6.0 訪問這些 COM 接口要相對容易些,但要通過 C 或 C++ 來使用這些接口和公共類,則會比較困難。然而,擁有托管擴展的 Microsoft .NET 和 Microsoft C#™ 或 Microsoft Visual C++® 卻能夠象 Visual Basic 6.0 一樣,輕松地使用 Office XP 公開的 COM 對象。
本文假定您要進行 Office XP 編程。盡管本文通篇提供了 MSDN® 文檔的超鏈接,但要掌握本文介紹的內容,您應該已經熟悉或者能夠訪問 Office XP 編程文檔。
該文檔介紹了 Office XP 提供的接口和公共類及其使用方法。文檔內容以 Visual Basic 編程語言形式表達,因此您需要在頭腦中對其中的方法和事件簽名進行轉換。本文將介紹如何進行這種轉換,如何准備 Office XP 的 COM 對象,以及如何在 C# 程序中使用這些 COM 對象。最後,本文還提供了一些提示,幫助您理解為何某些操作必須通過特定方法才能實現。通過此信息,您就應能夠利用其他使用 C# 的 COM 服務器。
系統要求要運行示例,計算機上需要安裝以下軟件:
.NET 技術引入了程序集的概念,並將其作為基本的可執行單元。程序集可以是可執行文件 (.exe) 或動態鏈接庫 (.dll),並可以包含多個文件。程序集包含有關運行程序所需的代碼、類型和資源的全部信息。
要使用 Office XP 公開的 COM 對象,需要使用主互操作程序集 (PIA),這樣 C# 編譯器就能夠找到 Office XP 公開的接口和公共類。
有關互操作程序集或 PIA 方面的內容,本文將不做詳細介紹。
了解一下已公開的類型信息通常會給您一些啟示。Microsoft Visual Studio® .NET 提供了一個稱作 ILDASM 的工具,用於列出封裝在程序集中的類型信息。圖 1 是 ILDASM 顯示 Word 2002 主互操作性程序集信息的部分屏幕快照。
注意:要打開 ILDASM 工具,請單擊“開始”,指向“程序”,指向“Microsoft Visual Studio .NET”,然後指向 Visual Studio .NET Tools(Visual Studio .NET 工具)並單擊 Visual Studio .NET Command Prompt(Visual Studio .NET 命令提示)。在 Visual Studio .NET Command Prompt(Visual Studio .NET 命令提示)窗口中,鍵入 ildasm。ILDASM 窗口隨後打開。要查看某一特定互操作程序集或 PIA 的類型信息,在 File(文件)菜單中,單擊 Open(打開)。浏覽到互操作程序集或 PIA 的所在位置,選擇要查看的互操作程序集或 PIA 並單擊 Open(打開)。圖 1:使用 ILDASM 工具查看互操作程序集的類型信息
如圖 1 所示,程序集位於 Microsoft.Office.Interop.Word.dll 中,而接口和公共類則封裝在 Microsoft.Office.Interop.Word 命名空間中。Application 公共類已經展開,這樣就可以看到,它擴展(按照 C++ 和 C# 用語,為派生)了 Application,並且在 Word 中實現了 ApplicationEvents2_Event 接口。所有這些內容都將在本文後續部分進行詳細討論。
使用 Office XP 主互操作程序集在運行本文包含的示例之前,應該在計算機上安裝 Microsoft Office XP Primary Interop Assemblies (PIAs)(英文)。安裝完 PIA 後必須將其置於編譯器和已完成程序可以訪問的位置。有關詳細信息,請參閱 Office XP PIA 下載文檔中包含的自述文件和“.NET Framework Developer's Guide”(要閱讀它,請單擊“開始”,指向“程序”,然後指向 Microsoft .NET Framework SDK 並單擊 Documentation [文檔])中的“Assembly Location”一文。