2011-03-27 57 views
0

因此,我得到了兩個不同的COM加載項,一個用於單詞2k3,一個用於2k7。單詞2k3每次都像魅力一樣,沒有問題等等......但現在當我打開單詞2k7時,2k3中的按鍵出現在我的2k7功能區中。這仍然發生,即使我禁用我的插件或清理我的項目...我已經嘗試了一切,包括刪除所有DLL爲我的2K3插件,但問題仍然存在... ...COM加載項不會在Word 2007中消失

什麼問題是什麼建議?

歡呼

回答

1

如果您在模板比normal.dot另一方面,他們會自動「消失」當您安裝配置這些按鈕的一個點。

對Normal.dot進行更改通常被認爲是不好的做法,但很多人沒有意識到,除非在創建之前將單詞中的「CustomizationContext」屬性設置爲自己的按鈕和工具欄,重做,修改normal.dot,並且這些更改將在您卸載外掛程序後繼續存在。

+0

這是否也適用於COM添加以及? – kUr4m4 2011-03-28 17:42:08

+0

另外,如果它確實在normal.dot中,我該如何解決問題?我在選項這個單詞上看了一下,我沒有在那裏顯示任何特別的添加...:/ – kUr4m4 2011-03-28 17:47:14

+0

插件不會在normal.dot中,但是如果你在十六進制編輯器中打開該文件並瀏覽通過它,你應該看到菜單和工具欄的定義,名稱等等。唯一的方法是刪除它是在這裏使用danbystroms的代碼或只是刪除normal.dot並讓word重新生成它(這是我通常做的,以及很多客戶端,所以我一直都很努力,不要因爲這個原因而依賴於Normal.dot。 – DarinH 2011-03-29 14:12:35

0

必須「手動」刪除按鈕,您的卸載過程的一部分。這是我使用的代碼:

public static void removeWordToolbarButton(
     Microsoft.Office.Interop.Word.Application word) 
    { 
     var commandBar = word.CommandBars["Tools"]; 
     var btn = commandBar.FindControl(
      Microsoft.Office.Core.MsoControlType.msoControlButton, 
      System.Reflection.Missing.Value, 
      "name_of_the_button", 
      System.Reflection.Missing.Value, 
      System.Reflection.Missing.Value) as Microsoft.Office.Core.CommandBarButton; 
     if (btn != null) 
     { 
      btn.Delete(-1); 
      Marshal.ReleaseComObject(btn); 
     } 
     Marshal.ReleaseComObject(commandBar); 
    } 
+0

感謝很多danbystrom!這有助於我實際上有刪除工具欄按鈕,但我也有一個菜單按鈕被放到我的功能區,該代碼應該爲它工作,以及吧? – kUr4m4 2011-03-28 01:10:38

+0

這個代碼應該在哪裏被調用?從功能區?安裝程序類? – Keith 2011-07-27 16:10:23

0

我懷疑問題依賴於normal.dot模板。 嘗試保存正常模板後刪除按鈕,命令欄等使用:

wordApplication.NormalTemplate.Save();