Outlook AddIn缩放.百分比

本文关键字:百分比 缩放 AddIn Outlook | 更新日期: 2023-09-27 17:49:39

我正在尝试将此VBA代码从Outlook插件转换为c#

Private Sub objInspector_Activate() Handles objInspector.Activate
        Dim wdDoc As Microsoft.Office.Interop.Word.Document = objInspector.WordEditor
        wdDoc.Windows(1).Panes(1).View.Zoom.Percentage = lngZoom
End Sub

但是我无法访问窗格。视图。缩放。百分比属性

主要思想是当用户打开电子邮件时,他将得到一个自定义缩放级别。

我现在得到的是:

void Inspector_Activate()          
 {             
// this bool is true
// bool iswordMail = objInspector.IsWordMail();
//I get the word document
Document word = objInspector.WordEditor as Microsoft.Office.Interop.Word.Document;
word.Application.ActiveDocument.ActiveWindow.View.Zoom.Percentage = 150;
// at this point i'm getting an exception
// I've also tried with 
// word.ActiveWindow.ActivePane.View.Zoom.Percentage = 150; getting the same exception                      
}

例外是:

类型为'System.Runtime.InteropServices.COMException'的异常发生在outlookaddtest .dll中,但未在用户代码中处理

附加信息:该对象模型命令在电子邮件。

我是c#和Office插件的新手,有什么建议吗?

Outlook AddIn缩放.百分比

使用word.Windows.Item(1).View.Zoom.Percentage = 150(其中word来自Inspector.WordEditor)

word.Application.ActiveDocument.ActiveWindow.View.Zoom。

触发异常的属性是什么?

无论如何,没有必要在代码中调用Application和ActiveDocument属性。检查器类的WordEditor属性返回一个Document类的实例(不是Word Application实例)。

感谢Eugene Astafiev的帮助。方括号起了作用

VBA

Private Sub objInspector_Activate() Handles objInspector.Activate
        Dim wdDoc As Microsoft.Office.Interop.Word.Document = objInspector.WordEditor
        wdDoc.Windows(1).Panes(1).View.Zoom.Percentage = 150
End Sub
c#

private void Inspector_Activate()
        {
            Document wdDoc = objInspector.WordEditor;
            wdDoc.Windows[1].Panes[1].View.Zoom.Percentage = 150;  
        }

我一直想要这个,然后我在MSDN画廊Outlook 2010中偶然发现了一个很好的项目:开发一个检查器包装。它为所有Outlook对象提供了一组包装器,因此您可以为每个感兴趣的项目获得一个真实的事件。我不确定这是不是最有效的方法,但它似乎有效。

我的视力有问题,所以我想把所有的东西都变黑,把所有的东西都变焦。我似乎可以通过覆盖Activate()方法来做到这一点。这一切都很新,所以我们会看看它是否能长期存在。

    protected virtual void Activate() {
        var activeDocument = Inspector.WordEditor as Document;
        if (activeDocument == null)
            return;
        var mailZoom = GetSetting("MailZoom", 125);
        if (mailZoom != 0)
            activeDocument.Windows[1].View.Zoom.Percentage = mailZoom;
        if (GetSetting("MailBlack", true)) {
            activeDocument.Background.Fill.ForeColor.RGB = 0;
            activeDocument.Background.Fill.Visible = msoTrue;
            activeDocument.Saved = true;
        }
    }

在这个例子中,GetSetting只是一个从INI文件返回设置的函数。您可以使用常量或其他存储方法。

可能有更好的方法来获得黑色文本上的白色,但这看起来很好。