从控制台应用程序打开文档时,我可以禁用Word按钮吗?

时间:2018-04-10 09:30:07

标签: c# ms-word console-application

我正在使用C#上的控制台应用程序,它接收文档路径并在Microsoft Word 2010上打开它

Word.Application oWordApp = new Word.Application();
        DisableSaveAsButton(oWordApp);
        oWordApp.Visible = true;

        try
        {
            Word.Document doc = oWordApp.Documents.Open(docFile);
            doc.Activate();
        } catch (System.Exception e)
        {
            Console.WriteLine("Error opening document\n"+ e.ToString() + "\n" +e.StackTrace);
        }

其中docFile是.doc文件路径。

我想打开Word,并且“另存为”按钮不会被激活,显示为灰色并且无法使用。我在那里找到了DisableSaveAsButton方法,它将是这样的:

private void DisableSaveAsButton(Word.Application oWordApp)
    {
        Object MenuBar = 40;
        Object FileMenu = 1;
        Object SaveAsButton = 5;
        var saveAsBtn = oWordApp.CommandBars[MenuBar].Controls[FileMenu].accChild[SaveAsButton] as CommandBarButton;

        saveAsBtn.Enabled = false;
    }

但它不起作用。根据我的阅读,大多数人通过在项目中编辑Ribbon1.xml来找到此解决方案,但我的程序是一个带有Word功能的控制台应用程序,而不是Word加载项,并且它没有任何功能区xml文件。所以我想知道,从控制台应用程序(boss的要求)中禁用“另存为”按钮是否可行,而不是使用带有自己模板的加载项?

1 个答案:

答案 0 :(得分:1)

您找到的代码是旧技术 - 在Word 2007之前.ComctBar对象已被Ribbon XML取代,旧的禁用功能命令不再有效。这是微软有意识的设计决定。

在较新的Ribbon界面中,只有在进程中运行的代码也会影响用户界面。所以你想做的事情是不可能的,至少在没有加载VBA或VSTO加载项的情况下也是如此。

如果您不希望用户能够保存他们的作品,那么就可以使用" Reader"似乎比使用完整的Word应用程序更好的方法,首先是编辑器。或许,最好将文档保存为PDF文件格式,然后在Acrobat Reader中打开它们。例如。