2013-02-26 1 views
2

Я разрабатываю аддон для MS Word 2010 с использованием VSTO. Слово имеет диалог «Настройка клавиатуры»:Получить имена макрокоманд для пунктов меню в Word

список

MS Word 2010 Customize Keyboard dialog

«Команда» содержит встроенный макрокоманд каждый назначенный к некоторому меню или действиям. Они могут быть выполнены из VSTO с использованием метода Application.Run().

Мне нужно получить записи в форме «Название элемента меню» - «Имя команды макроса» - «Ярлык клавиатуры» для текущего установленного экземпляра Word.

То, что я пытался до сих пор:

Application.CustomizationContext = Application.NormalTemplate; 
foreach (CommandBar bar in Application.CommandBars) 
{ 
    // Name of menu group 
    Application.Selection.InsertAfter(bar.NameLocal + "\n"); 
    foreach (CommandBarControl control in bar.Controls) 
    { 
     // Human-readable name 
     Application.Selection.InsertAfter("\nName:" + control.accName 
        // Broad description 
        + "\nDescription:" + control.DescriptionText 
        // Keyboard shortcut 
        + "\nShortcut:" + control.accKeyboardShortcut); 
    } 
} 

К сожалению CommandBarControl не содержит макросы поля имени команды. Мне интересно, как это собрать и склеить все вместе?

ответ

0

ОК, пришло время ответить на другой мой вопрос, который получил слишком много внимания.

В каждой версии Microsoft Office имеется куча таблиц Excel, содержащих ID, имя команды, ярлыки по умолчанию и другую информацию. Вот для 2010 version. Используя предоставленные таблицы, теперь легко получить все, что нам нужно:

var id = // Obtain from downloaded bundle 
var name = // Obtain from downloaded bundle 
var control = Application.CommandBars.FindControl(Id:id); 
var description = control.DescriptionText; 
var caption = control.Caption; 
var shortcut = control.accKeyboardShortcut; 
var parentControl = control.Parent; 
Смежные вопросы