是否可以通过拖放和通过附件菜单按钮来区分添加的附件

时间:2019-01-30 23:18:39

标签: c# outlook outlook-addin email-attachments

我有一个Outlook加载项,可以处理电子邮件附件。我有自己的功能区按钮来添加附件,但是我想捕捉通过拖放添加的附件,而忽略使用标准附件按钮添加的附件。

实现ItemEvents_10_BeforeAttachmentAddEventHandler()很容易,但是我无法区分通过拖放和通过附件菜单按钮添加的附件。

这可能吗?

是否可以直接处理自己的拖放事件?

2 个答案:

答案 0 :(得分:1)

OOM不会在这里为您提供帮助。 从理论上讲,您可以覆盖Outlook拖放处理程序。

  1. 使用IOleWindow界面获取检查器的窗口句柄(可以将Inspector对象投射到IOleWindow)。
  2. 使用GetProp(hwnd, "OleDropTargetInterface") Windows API获取现有的拖放处理程序-将返回的值强制转换为IDropTarget界面。您可能需要试验检查器的哪个子窗口是您想要的拖放目标。
  3. 致电RevokeDragDrop / RegisterDragDrop,以传递您自己的IDropTarget实现。然后,该实现可以(在完成您需要的操作后)调用原始的IDropTarget接口,以使Outlook继续执行默认行为。

答案 1 :(得分:0)

我可能已经发现了一种方法与拖放和通过附接菜单按钮添加的附件之间进行区分,而不必覆盖拖/放处理程序。

通过拖放添加附件时,Outlook应用程序不在前台,因此它没有活动窗口。

在我的BeforeAttachmentAdd()事件处理我执行下面的测试:

props.put("internal.leave.group.on.close", true); // Streams' default is `false`