首页 > 解决方案 > 使用 VSTO 加载项以编程方式获取功能区列表

问题描述

我使用 Visual Studio 2019 创建了一个 C# VSTO 加载项,该加载项从套接字连接接收命令,并且它可以插入文本,仅使用 office Interop 在我的功能区中修改按钮。

我想知道两件事。

  1. 如何以编程方式获取所有功能区(主页、插入、设计……)的名称?
  2. 在我创建的功能区以外的任何其他功能区上启动鼠标单击(例如单击主页选项卡中的粗体按钮)。

对于第二个问题,我只想使用 office 插件,而不是通过模拟按键/鼠标事件。

标签: c#visual-studiovstoprogrammatically

解决方案


如何以编程方式获取所有功能区(主页、插入、设计……)的名称?

完成这项工作没有简单的方法。您可以尝试使用Accessibility APIMicrosoft Active Accessibility是一种基于组件对象模型 (COM) 的技术,可改进辅助功能与在 Microsoft Windows 上运行的应用程序一起工作的方式。它提供了集成到操作系统中的动态链接库以及一个 COM 接口和 API 元素,这些元素提供了可靠的方法来公开有关 UI 元素的信息。

在我创建的功能区以外的任何其他功能区上启动鼠标单击(例如单击主页选项卡中的粗体按钮)。

您可以使用CommandBars.ExecuteMso方法来执行由idMso参数标识的控件。此方法在特定命令没有对象模型的情况下很有用。适用于内置buttonstoggleButtonssplitButtons. 失败时,它为无效的 idMso 返回 E_InvalidArg,为未启用或不可见的控件返回 E_Fail。

Application.CommandBars.ExecuteMso("Copy")

推荐阅读