Oultook 2013 InlineResponse - 禁用前进按钮

时间:2015-10-06 07:37:55

标签: c# outlook

我在Outlook中运行了一个表单服务器,我为表单服务器处理的项目指定了不同的MessageClass(比如说IPM.Note.Test)。如果在资源管理器视图中使用MessageClass IPM.Note.Test选择一个项目,并尝试从功能区转发按钮,我会通过挂钩转发命令阻止用户这样做。

在OL 2013中,如果您有阅读窗格可见,并在资源管理器中选择一个项目,您可以看到它的预览,并可以从阅读窗格顶部的工具栏中转发/回复/回复,这将创建一个InlineResponse。

我想挂钩这个Forward操作,并阻止用户这样做,就像我对Explorer-Ribbon Forward命令一样。

我知道在创建内联响应的任何操作上触发的Explorer.InlineResponse事件,但是此操作在操作之后触发,而不是在它之前触发,并且它触发Reply,ReplyAll和Forward,这三个他们。我只想拦截前锋。事件中没有信息告诉哪个动作触发了它。

在创建InlineResponse之前,有没有办法识别触发事件的动作?

或者有没有办法阻止创建InlineResponse? (从代码中,我知道你可以在OL选项中禁用它。)

或者有没有办法从Explorer.SelectionChange事件中禁用这些操作/内联响应?

我将不胜感激任何帮助。

感谢。

3 个答案:

答案 0 :(得分:0)

attrs对象公开sendAction集合。检索Forward操作,将MailItem属性设置为true,调用Actions

答案 1 :(得分:0)

您需要将相应Action对象实例的Enabled属性设置为 false True如果在应用程序中启用了操作,false - 如果操作已禁用。

答案 2 :(得分:0)

谢谢你们花时间回答这个问题。

还出现了其他问题,我暂时搁置了这个问题。

正如我之前提到的,我有自己的Form Server和不同的MessageClass。所以我在ExplorerSelectionChange事件中得到的MailItem对象,不是 Outlook MailItem,而是我的 MailItem,不幸的是,目前它无法获取Actions属性就可以了,可能是因为我的表单服务器实现没有返回正确的。

所以,虽然,对于普通的MailItem,Enabled属性会起作用,但它不能解决我的问题...... :(

我也发布到Outlook Dev论坛,有人建议如下:

Private Sub myOlExp_InlineResponse(ByVal Item As Object)
Dim a As MailItem
Set a = Item
If a.To = "" Then
    a.Close olDiscard ‘close the mail item
    MsgBox "Forward is not supported"
End If
End Sub

虽然有点hacky,并没有很好的用户体验,但我现在正在接受这个答案,因为它有效。

在这里分享,以防其他人来寻找它。

Complete thread