2011-03-27 3 views
0

이렇게 두 가지 COM 추가 기능이 있습니다. 하나는 2k3 단어이고 다른 하나는 2k7 글꼴입니다. 단어 2k3은 매번 매력처럼 작동합니다. 문제는 아니지만 ... 이제 단어 2k7을 열면 2k3의 버튼이 제 2k7 리본에 나타납니다. 이것은 여전히 ​​내 addin을 비활성화하거나 내 프로젝트를 정리 한 후에도 발생합니다 ... 내 2k3 addin에 대한 모든 DLL을 삭제하는 것을 포함하여 모든 작업을 시도했지만 문제가 계속 발생합니다 ...COM 추가 기능이 단어 2007에서 사라지지 않음

문제점에 대한 제안 사항이 있습니까?

건배

답변

1

: 이것은 내가 사용하는 코드입니다.

일반적으로 Normal.dot를 변경하는 것은 좋지 않지만 많은 사람들이 자신의 단추 및 도구 모음이기 전에 단어에 "CustomizationContext"속성을 설정하지 않으면 많은 사람들이 그 사실을 인식하지 못합니다. Normal.dot를 수정하는 등의 작업을 수행하고 이러한 변경 사항은 추가 기능을 제거한 후에도 유지됩니다.

+0

이 기능은 COM 추가 기능에도 적용됩니까? – kUr4m4

+0

또한, 그것이 실제로 normal.dot에 있다면 어떻게 문제를 해결할 수 있습니까? 내가 단어 옵션에 쳐다 보면서 거기에 특정 추가 표시하지 않습니다 .../ – kUr4m4

+0

추가 기능은 normal.dot에 없지만 16 진수 편집기에서 파일을 열고 그것을 통해, 당신은 메뉴와 툴바 정의, 이름 등을 볼 수 있어야합니다. 그것을 제거하는 유일한 방법은 여기서 danbystroms의 코드를 사용하거나 그냥 normal.dot을 삭제하고 단어를 재생성하게합니다 (이것은 내가 일반적으로하는 일이며, 클라이언트가 그렇기 때문에 항상 Normal.dot에 mods를 의존하지 않으려 고 노력했습니다. – DarinH

0

제거 프로세스의 일부로 "수동으로"제거해야합니다. 당신이 normal.dot가 아닌 다른 템플릿, 그들은 자동으로 설치 할 때 "사라"것에 그 버튼을 구성하는 점을 한 경우

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! 그게 도움이 도구 모음 단추가 실제로 있기 때문에 제거 할 수 있지만 내 리본에 넣을 가져 오는 menubar 단추를, 그 코드를 잘 작동합니다? – kUr4m4

+0

이 코드를 어디에서 호출해야합니까? 리본 에서요? 설치 프로그램 클래스? – Keith

0

이 문제는 normal.dot 템플릿을 사용하는 것으로 판단됩니다. 단추, commandbars 등을 제거한 후 일반 템플릿을 저장하려고 시도하십시오.

wordApplication.NormalTemplate.Save(); 
관련 문제