2015-05-14 55 views
0

你好StackOverflowers,字織帶命令截取

我有在Word外接下面色帶XML代碼(VS 2012/.NET 4.5):

<?xml version="1.0" encoding="UTF-8"?> 
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" > 

    <commands> 
    <!-- Working commands --> 
    <command idMso="ReviewTrackChanges" onAction="onMsoToggleCommand"/> 
    <command idMso="SmartArtInsert" onAction="onMsoCommand"/> 
    <command idMso="Thesaurus" onAction="onMsoCommand"/> 

    <!-- NOT Working commands --> 
    <command idMso="MailMergeStartLetters" onAction="onMsoToggleCommand"/> 
    <command idMso="MailMergeStartEmail" onAction="onMsoToggleCommand"/> 
    <command idMso="MailMergeStartEnvelopes" onAction="onMsoToggleCommand"/> 
    <command idMso="MailMergeStartLabels" onAction="onMsoToggleCommand"/> 
    <command idMso="MailMergeStartDirectory" onAction="onMsoToggleCommand"/> 
    <!-- NOT Working commands as well?!--> 
    <command idMso="ReviewCompareTwoVersions" onAction="onMsoCommand"/> 
    <command idMso="ReviewCombineRevisions" onAction="onMsoCommand"/> 
    </commands> 
</customUI> 

相應回調是:

和:

public void onMsoCommand(IRibbonControl control, ref bool Cancel) 
{ 
    Cancel = false; 
    Logger.LogEvent(control.Id); 
} 

我想攔截這些命令來完成額外的任務。對於Word 2010和2013,一切都按預期工作,但是,對於Word 2007而言,前3條命令似乎正在工作,對於可能的原因有何建議?

附加兩組命令我試圖攔截:

enter image description here

謝謝

+1

你在Word中遇到任何UI錯誤嗎?有關更多信息,請參閱[如何顯示附加用戶界面錯誤](https://msdn.microsoft.com/en-us/library/bb608619.aspx?f=255&MSPPError=-2147217396)。 –

+0

謝謝@Eugene Astafiev您的建議,這個提示確實可以幫助我找出問題所在。當我指向「顯示附加UI錯誤」時,你保存了我的未來,非常感謝:)我將寫出答案,解釋我是如何解決這個問題的。 –

回答

0

基於@Eugene Astafiev的評論,我終於能夠解決這一問題。事實上,原始的XML功能區代碼是這樣的(注意到一些Excel的命令的中間存在):

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" > 
    <commands> 
    <!-- Working Word commands --> 
    <command idMso="ReviewTrackChanges" onAction="onMsoToggleCommand"/> 
    <command idMso="SmartArtInsert" onAction="onMsoCommand"/> 
    <command idMso="Thesaurus" onAction="onMsoCommand"/> 

    <!-- Excel Commands --> 
    <command idMso="Connections" onAction="onMsoCommand"/> 
    <command idMso="Refresh" onAction="onMsoCommand"/> 
    <command idMso="RefreshAll" onAction="onMsoCommand"/> 

    <!-- NOT Working Word commands --> 
    <command idMso="MailMergeStartLetters" onAction="onMsoToggleCommand"/> 
    <command idMso="MailMergeStartEmail" onAction="onMsoToggleCommand"/> 
    <!-- Remaining Word commands.. --> 
    </commands> 
</customUI> 

所以,當Word 2007中嘗試讀取這個XML,它遇到的Excel命令,並因爲它不能識別它們,它只是用XML的其餘部分忽略它們,因此其餘的Word命令不會被調用!對於Word 2010和2013而言,它的工作非常完美。
我最終將Word和Excel功能區命令分離爲兩個xml文件,然後根據Office應用程序加載正確的命令。