2015-10-06 56 views
0

我有一个在Outlook中运行的表单服务器,我指定了一个不同的MessageClass(说IPM.Note.Test)为我的表单服务器处理的项目。如果您在资源管理器视图中选择了一个包含MessageClass IPM.Note.Test的项目,并尝试从功能区按钮转发,则可通过挂接到转发命令来阻止用户这样做。Oultook 2013 InlineResponse - 禁用前进按钮

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

我想挂钩到此转发操作中,并阻止用户这样做,就像我对“资源管理器 - 功能区转发”命令所做的那样。

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

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

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

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

我将不胜感激任何帮助。

谢谢。

回答

0

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

还有其他东西出现了,我把这个问题搁置了一下。

正如我前面提到的,我有我自己的表单服务器与不同的MessageClass。因此,我在ExplorerSelectionChange事件中获得的MailItem对象并不是纯Outlook MailItem,而是我的 MailItem,不幸的是,目前,它无法获取Actions属性,可能是因为我的Form Server实现不会返回适当的一个。

所以,虽然,对于一个正常的MailItem,Enabled属性会的工作,它不解决我的问题... :(

我的X贴到Outlook开发论坛,以及,有人建议如下:

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 

虽然有点冒失,而不是一个很好的用户体验,但我现在正在考虑这个答案,因为它的工作原理。

在这里共享,以防别人来找它。

Complete thread

0

MailItem对象公开Actions集合。检索转发操作,将Action.Enabled属性设置为true,请致电MailItem.Save

0

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