我有一个Outlook加载项,可以处理电子邮件附件。我有自己的功能区按钮来添加附件,但是我想捕捉通过拖放添加的附件,而忽略使用标准附件按钮添加的附件。
实现ItemEvents_10_BeforeAttachmentAddEventHandler()很容易,但是我无法区分通过拖放和通过附件菜单按钮添加的附件。
这可能吗?
是否可以直接处理自己的拖放事件?
答案 0 :(得分:1)
OOM不会在这里为您提供帮助。 从理论上讲,您可以覆盖Outlook拖放处理程序。
IOleWindow
界面获取检查器的窗口句柄(可以将Inspector
对象投射到IOleWindow
)。GetProp(hwnd, "OleDropTargetInterface")
Windows API获取现有的拖放处理程序-将返回的值强制转换为IDropTarget
界面。您可能需要试验检查器的哪个子窗口是您想要的拖放目标。RevokeDragDrop
/ RegisterDragDrop
,以传递您自己的IDropTarget
实现。然后,该实现可以(在完成您需要的操作后)调用原始的IDropTarget
接口,以使Outlook继续执行默认行为。答案 1 :(得分:0)
我可能已经发现了一种方法与拖放和通过附接菜单按钮添加的附件之间进行区分,而不必覆盖拖/放处理程序。
通过拖放添加附件时,Outlook应用程序不在前台,因此它没有活动窗口。
在我的BeforeAttachmentAdd()事件处理我执行下面的测试:
props.put("internal.leave.group.on.close", true); // Streams' default is `false`