InfoPath 2007 --来自microsoft.com

用于将 InfoPath 2007 集成到 Visual Studio 2005 中的 InfoPath Designer API 概述发布日期 : 2006-11-17 | 更新日期 : 2006-11-17
摘要:了解在安装 Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System 时,如何将 Microsoft Office InfoPath 2007 窗体模板设计环境集成到 Visual Studio 2005 IDE 中。本文还将介绍 InfoPath 提供的 VsInfoPathDesigner 对象和九个函数,当 InfoPath 设计环境作为自定义编辑器驻留于 Visual Studio 中时,该对象和这些函数可用来执行与项目相关的任务。(本文章还包含指向英文网页的链接。)

Mark Roberts,Microsoft

Gary Hsu,Microsoft

适用于:Microsoft 2007 Office Suites、Microsoft Office InfoPath 2007、Microsoft Visual Studio 2005

本页内容
 在 Visual Studio 中集成 InfoPath 2007 概述
 用于将 InfoPath 2007 集成到 Visual Studio 中的 InfoPath Designer API
 结束语
 其他资源


在 Visual Studio 中集成 InfoPath 2007 概述
当您使用 Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System 时,会将 Microsoft Office InfoPath 2007 窗体模板设计环境集成到 Microsoft Visual Studio 2005 开发环境中。在此集成环境中,您可以使用 Office InfoPath 2007 的功能设计 InfoPath 窗体模板的布局并编写托管代码业务逻辑,而不必离开 Visual Studio。在 Visual Studio 中使用 InfoPath 窗体模板时,开发人员会对照全新 Office InfoPath 2007 托管代码对象模型(Microsoft.Office.InfoPath 命名空间的类型和成员)或 Microsoft Office InfoPath 2003 兼容对象模型(Microsoft.Office.Interop.InfoPath.SemiTrust 命名空间的类型和成员)用 C# 或 Microsoft Visual Basic 编写业务逻辑。

在安装 Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System 后,您可以创建自定义的 Visual Studio 项目类型(用于 C# 或 Visual Basic 的“InfoPath 窗体模板”),然后使用 InfoPath 2007 窗体模板设计环境(它作为自定义 Visual Studio 编辑器驻留)来执行窗体模板设计任务以及添加事件处理程序以及其他业务逻辑代码。

通过安装并注册按照 Visual Studio SDK 的 Visual Studio Integration(英文)一节中所述过程创建的 VSPackage,可将 InfoPath 2007 窗体模板设计环境集成到 Visual Studio 集成开发环境 (IDE) 中。VSPackage 是一些软件模块,通过提供用户界面元素、服务、项目、编辑器和设计器构成并扩展了 Visual Studio IDE。InfoPath Designer VSPackage 起到包装的作用,可将 InfoPath 设计环境的用户界面元素和功能集成到 Visual Studio 中。VSPackage 的正确运行取决于本地安装的 InfoPath 2007 能否正确运行。

在以下注册表项中,InfoPath Designer VSPackage 被注册为 Visual Studio 2005 编辑器包:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Editors\{6ab7a76b-2809-4a7c-bff6-2a3b99feef91}
由 InfoPath 窗体模板项目创建的这类项目是 Visual Studio Tools for Applications (VSTA) 项目,并包括随 InfoPath 2007 一同安装的 VSTA 组件的依赖关系。

要获得有关 Visual Studio 集成的最新信息(包括示例解决方案和工具),请下载 Visual Studio SDK。为此,请以 Visual Studio Industry Partner (VSIP) 会员身份注册或登录 https://www.vsipmembers.com/,然后从 http://affiliate.vsipmembers.com/affiliate/downloadFiles.aspx 下载 Visual Studio SDK。有关 Visual Studio 集成的附加信息和支持,请参阅 MSDN 上的 Visual Studio Extensibility 论坛(英文)和 microsoft.public.vstudio.extensibility(英文)新闻组。

有关 VSTA 的信息将最终包括在 Visual Studio SDK 中,不过在本文发表时,SDK 中尚未提供此信息。有关 VSTA 的当前信息,请参阅本文结尾的其他资源部分。

 返回页首

用于将 InfoPath 2007 集成到 Visual Studio 中的 InfoPath Designer API
InfoPath 设计器对象 VsInfoPathDesigner 是在安装 InfoPath 2007 时安装在驱动器:\Program Files\Microsoft Office\OFFICE12 目录内的 IPDESIGN.dll 中实现的。VsInfoPathDesigner 对象实现用来将 InfoPath 设计环境与 Visual Studio 集成所需的接口。IPDESIGN.dll 组件还提供九个函数,用于当 InfoPath 设计环境作为自定义编辑器驻留于 Visual Studio 2005 时,执行与 InfoPath 项目相关的任务。VsInfoPathDesigner 对象将实现 IVsWindowFrame 接口,以在 Visual Studio 中驻留 InfoPath 文档和工具窗口。有关将自定义编辑器集成到 Visual Studio 中的示例,请参阅 Visual Studio SDK 中的 Basic Edit Sample(英文)和 Figures Edit Sample(英文)。

VsInfoPathDesigner 对象的类 ID (CLSID) 是 {6ab7a76b-2809-4a7c-bff6-2a3b99feef91}。

以下代码将显示 VsInfoPathDesigner 对象的 CLSID 的声明。

C++

extern "C" const __declspec(selectany) CLSID CLSID_VsInfoPathDesigner =
   { 0x6AB7A76B, 0x2809, 0x4A7C,
   { 0xBF, 0xF6, 0x2A, 0x3B, 0x99, 0xFE, 0xEF, 0x91 } };
IPDESIGN.dll 导出以下九个函数:

RunVsTemplateWizard

RunPostVsProjectCreationTasks

ConvertInfoPathProjectForVSTO

GetAssociatedVsDocument

CreateVsWorkpane

CanShowVsWorkpane

ExecVsExportTemplate

RunStartupTasksForVSTO

ResetToolboxItems

以下部分将逐一介绍这些函数。

RunVsTemplateWizard
RunVsTemplateWizard 将启动“表格设计模板”对话框。

C++

STDAPI RunVsTemplateWizard(
      IN    BSTR                    bstrManifestPath,
      IN    BSTR                    bstrProjectName,
      IN    BSTR                    bstrProjectPath,
      IN    BSTR                    bstrLanguage,
      OUT   InfoPathDesignMode*     peDesignMode,
      OUT   BOOL*                   pfO12OM,
      OUT   BOOL*                   pfAllowClientOnlyCode);
表 1 说明了 RunVsTemplateWizard 函数的参数。

表 1. RunVsTemplateWizard 函数的参数  参数
 定义
 
bstrManifestPath
 指定保存解决方案的位置。
 
bstrProjectName
 指定解决方案标题所用的项目名称。
 
bstrProjectPath
 指定项目文件的路径(与窗体模板的 manifest.xsf 文件中的 managedCode/@projectPath 属性相对应)。
 
bstrLanguage
 指定窗体模板项目的编程语言。可以是 CSharp 或 VisualBasic(与窗体模板的 manifest.xsf 文件中的 managedCode/@language 属性相对应)。
 
peDesignMode
 返回一个值,指示项目设计模式。这与“设计表单模板”对话框中的“仅启用浏览器兼容功能”复选框的设置相对应。如果未选中该复选框,则返回 1;如果选中该复选框,则返回 2。
 
pfO12OM
 返回一个值,指示引用了哪个 InfoPath 托管代码对象模型。如果引用 Microsoft.Office.InfoPath 程序集,则返回 TRUE;如果引用 Microsoft.Office.Interop.InfoPath.SemiTrust 程序集,则返回 FALSE。
 
pfAllowClientOnlyCode
 返回一个值,指示是否在“表单选项”对话框的“兼容性”类别中选中“隐藏使用仅 InfoPath 功能的代码错误”复选框。如果选中该复选框,则返回 TRUE;如果未选中该复选框,则返回 FALSE。
 

当用户在“设计表单模板”对话框中创建或加载窗体模板时,设计器将始终保存用户选定的解决方案的新副本。

RunPostVsProjectCreationTasks
RunPostVsProjectCreationTasks 会在项目创建后运行任务,例如,验证程序集名称、初始化代码文件、更新引用和创建签署密钥。

C++

STDAPI RunPostVsProjectCreationTasks(
      IN    IDispatch*              pdispProject,
      IN    BOOL                    fO12OM,
      IN    BOOL                    fCSharp,
      IN    InfoPathDesignMode      eDesignMode,
      IN    BOOL                    fEnableClientOnlyCode);
表 2 说明了 RunPostVsProjectCreationTasks 函数的参数。

表 2. RunPostVsProjectCreationTasks 函数的参数  参数
 定义
 
pdispProject
 指定指向项目对象的 IDispatch 指针。
 
fO12OM
 指定要引用哪个 InfoPath 托管代码对象:

Microsoft.Office.InfoPath 程序集

Microsoft.Office.Interop.InfoPath.SemiTrust 程序集

指定 TRUE 引用由 Microsoft.Office.InfoPath 程序集提供的对象模型;指定 FALSE 则会引用由 Microsoft.Office.Interop.InfoPath.SemiTrust 程序集提供的对象模型。
 
fCSharp
 指定项目使用哪种编程语言。指定 TRUE 使用 C# ;指定 FALSE 则使用 Visual Basic。
 
eDesignMode
 指定项目的设计模式。这与“设计表单模板”对话框中“仅启用浏览器兼容功能”复选框的设置相对应。如果未选中该复选框,则指定 1;如果选中该复选框,则指定 2。
 
fEnableClientOnlyCode
 指定是否启用仅客户端代码。这与在“表单选项”对话框的“兼容性”类别中“隐藏使用仅 InfoPath 功能的代码错误”复选框是否被选中相对应。如果选中该复选框,则指定 TRUE;如果未选中该复选框,则指定 FALSE。
 

ConvertInfoPathProjectForVSTO
ConvertInfoPathProjectForVSTO 会将使用 InfoPath 2003 Toolkit 之一创建的 InfoPath 托管代码窗体模板项目转换为 Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System (VSTO) 项目。

C++

STDAPI ConvertInfoPathProjectForVSTO(
      IN    BSTR                    bstrProjectLocation,
      IN    IServiceProvider*       pServiceProvider,
      OUT   BSTR*                   pbstrNewProjectLocation,
      OUT   GUID*                   pguidNewProjectFactory,
      OUT   BOOL*                   pfWhidbeySolution);
表 3 说明了 ConvertInfoPathProjectForVSTO 函数的参数。

表 3. ConvertInfoPathProjectForVSTO 函数的参数  参数
 定义
 
bstrProjectLocation
 指定项目的位置。
 
pServiceProvider
 指定从 Visual Studio 指向服务提供程序的 IServiceProvider 指针。
 
pbstrNewProjectLocation
 返回新项目位置。
 
pguidNewProjectFactory
 返回新项目工厂的 GUID(C# 项目 GUID 或 Visual Basic 项目 GUID)。
 
pfWhidbeySolution
 返回原始项目是使用 InfoPath 2003 Toolkit for Visual Studio .NET 2003 创建的还是使用 Microsoft Visual Studio 2005 Tools for the Microsoft Office System 创建的。如果原始项目是 Microsoft Visual Studio 2005 Tools for the Microsoft Office System 项目,则返回 TRUE;如果原始项目是 InfoPath 2003 Toolkit for Visual Studio .NET 2003 项目,则返回 FALSE。
 

GetAssociatedVsDocument
GetAssociatedVsDocument 获得与 InfoPath 设计器相关联的当前活动文档。

C++

STDAPI GetAssociatedVsDocument(
      OUT   IUnknown**              ppunkAssociatedVsDocument);
表 4 说明了 GetAssociatedVsDocument 函数的参数。

表 4. GetAssociatedVsDocument 函数的参数  参数
 定义
 
ppunkAssociatedVsDocument
 返回指向文档的 IUnknown 指针。
 

CreateVsWorkpane
CreateVsWorkpane 会创建 InfoPath 任务窗格工具窗口。

C++

STDAPI CreateVsWorkpane(
      IN    IUnknown*        punkSite,
      IN    REFGUID          rguidPersistenceGuid
      OUT   IVsWindowFrame** ppWindowFrame);
表 5 说明了 CreateVsWorkpane 函数的参数。

表 5. CreateVsWorkpane 函数的参数  参数
 定义
 
punkSite
 指定从 Visual Studio 指向服务提供程序的 IUnknown 指针。
 
rguidPersistenceGuid
 指定要创建的 InfoPath 任务窗格的 GUID。
 
ppWindowFrame
 返回 IVsWindowFrame 指针,指向包含指定任务窗格的 Visual Studio 工具窗口。
 

使用表 6 所示的 GUID 值指定 rguidPersistenceGuid 参数的值。

表 6. rguidPersistenceGuid 参数的 GUID 值  任务窗格
 GUID
 
中文版式
 {00000716-2809-4A7C-BFF6-2A3B99FEEF91}
 
项目符号和编号
 {00000725-2809-4A7C-BFF6-2A3B99FEEF91}
 
配色方案
 {000005E5-2809-4A7C-BFF6-2A3B99FEEF91}
 
数据源
 {00000724-2809-4A7C-BFF6-2A3B99FEEF91}
 
检查设计方案
 {00000855-2809-4A7C-BFF6-2A3B99FEEF91}
 
设计任务
 {000007BD-2809-4A7C-BFF6-2A3B99FEEF91}
 
字体
 {000007B8-2809-4A7C-BFF6-2A3B99FEEF91}
 
网格
 {00000717-2809-4A7C-BFF6-2A3B99FEEF91}
 
布局
 {00000768-2809-4A7C-BFF6-2A3B99FEEF91}
 
段落
 {000005AA-2809-4A7C-BFF6-2A3B99FEEF91}
 
拼写
 {000006DA-2809-4A7C-BFF6-2A3B99FEEF91}
 
视图
 {000006DC-2809-4A7C-BFF6-2A3B99FEEF91}
 

注意:

“中文版式”和“网格”任务窗格仅在 InfoPath 2007 亚洲语言版本中提供。

CanShowVsWorkpane
CanShowVsWorkpane 确定是否可以显示指定的 InfoPath 任务窗格。

C++

STDAPI CanShowVsWorkpane(
      IN    IUnknown*               punkSite,
      IN    REFGUID                 rguidPersistenceGuid,
      OUT   BOOL*                   pfCanShow);
表 7 说明了 CanShowVsWorkpane 函数的参数。

表 7. CanShowVsWorkpane 函数的参数  参数
 定义
 
punkSite
 指定从 Visual Studio 指向服务提供程序的 IUnknown 指针。
 
rguidPersistenceGuid
 指定与 InfoPath 任务窗格相关联的 GUID。
 
pfCanShow
 如果可以显示任务窗格,则返回 TRUE;否则返回 FALSE。
 

使用表 8 所示的 GUID 值指定 rguidPersistenceGuid 参数的值。

表 8. rguidPersistenceGuid 参数的 GUID 值  任务窗格
 GUID
 
中文版式
 {00000716-2809-4A7C-BFF6-2A3B99FEEF91}
 
项目符号和编号
 {00000725-2809-4A7C-BFF6-2A3B99FEEF91}
 
配色方案
 {000005E5-2809-4A7C-BFF6-2A3B99FEEF91}
 
数据源
 {00000724-2809-4A7C-BFF6-2A3B99FEEF91}
 
检查设计方案
 {00000855-2809-4A7C-BFF6-2A3B99FEEF91}
 
设计任务
 {000007BD-2809-4A7C-BFF6-2A3B99FEEF91}
 
字体
 {000007B8-2809-4A7C-BFF6-2A3B99FEEF91}
 
网格
 {00000717-2809-4A7C-BFF6-2A3B99FEEF91}
 
布局
 {00000768-2809-4A7C-BFF6-2A3B99FEEF91}
 
段落
 {000005AA-2809-4A7C-BFF6-2A3B99FEEF91}
 
拼写
 {000006DA-2809-4A7C-BFF6-2A3B99FEEF91}
 
视图
 {000006DC-2809-4A7C-BFF6-2A3B99FEEF91}
 

注意:

“中文版式”和“网格”任务窗格仅在 InfoPath 2007 亚洲语言版本中提供。

ExecVsExportTemplate
如果 InfoPath 设计器当前处于活动状态,则 ExecVsExportTemplate 会显示一条警告。如果曾经显示警告,则返回 S_OK,否则返回 OLECMDERR_E_UNKNOWNGROUP。

C++

STDAPI ExecVsExportTemplate(
      IN    IUnknown*               punkSite);
表 9 说明了 ExecVsExportTemplate 函数的参数。

表 9. ExecVsExportTemplate 函数的参数  参数
 定义
 
punkSite
 指定从 Visual Studio 指向服务提供程序的 IUnknown 指针。
 

RunStartupTasksForVSTO
加载项目后,RunStartupTasksForVSTO 会运行 VSTA 特定的启动任务。

C++

STDAPI RunStartupTasksForVSTO(
      IN    IDispatch*              pdispHostAdapter);
表 10 说明了 RunStartupTasksForVSTO 函数的参数。

表 10. RunStartupTasksForVSTO 函数的参数  参数
 定义
 
pdispHostAdapter
 指定指向 IVstaHostAdapter 接口指针的 IDispatch 指针。
 

ResetToolboxItems
ResetToolboxItems 会重置 Visual Studio 的“工具箱”中的 InfoPath 项。

C++

STDAPI ResetToolboxItems();
 返回页首

结束语
安装 Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System 后,即可使用“InfoPath 窗体模板”自定义项目类型,并通过 Visual Studio 集成将 Office InfoPath 2007 窗体模板设计环境作为自定义编辑器集成到 Visual Studio 2005 开发环境中(如 Visual Studio SDK 文档中所述)。InfoPath 2007 提供了九个可通过 Visual Studio 环境调用的方法,可执行各种与 InfoPath 窗体模板项目相关的任务。

 返回页首

其他资源
有关使用 InfoPath 开发的详细信息,请参阅 Microsoft Office Developer Center:InfoPath Developer Portal(英文)。

有关 VSTA 的详细信息,请参阅:

VSTA 团队博客

Blog:Paul Stubbs—Application Customization with .NET(英文)

Microsoft Visual Studio Tools for Applications:Fact Sheet(英文)

Microsoft Visual Studio Developer Center:Microsoft Visual Studio 2005 Tools for Applications(英文)

转到原英文页面

© 2006 Microsoft Corporation 版权所有。保留所有权利。使用规定。

 返回页首

转载于:https://www.cnblogs.com/window5549-accp/archive/2009/10/01/1577234.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值