Можно ли различить вложения, добавленные с помощью перетаскивания, и с помощью кнопки меню вложения - PullRequest
0 голосов
/ 31 января 2019

У меня есть надстройка для Outlook, которая обрабатывает вложения электронной почты.У меня есть собственная кнопка ленты, чтобы добавлять вложения, но я хотел бы ловить вложения, добавленные с помощью перетаскивания, игнорируя при этом вложения, добавленные с помощью стандартной кнопки вложения.

Достаточно просто реализовать ItemEvents_10_BeforeAttachmentAddEventHandler (), но я знаю,нет никакого способа различить вложения, добавленные с помощью перетаскивания и с помощью кнопки меню вложения.

Возможно ли это?

Возможно ли обрабатывать событие перетаскивания непосредственно для себя?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Возможно, я нашел способ различать вложения, добавленные с помощью перетаскивания и с помощью кнопки меню вложений, без необходимости перезаписывать обработчик перетаскивания.

Когда вложения добавляются с помощью перетаскивания в Outlookприложение не на переднем плане, поэтому у него нет активного окна.

В моем обработчике событий BeforeAttachmentAdd () я выполняю следующий тест:

IntPtr hWnd = GetActiveWindow();                
if (hWnd == IntPtr.Zero) {
// Handle drag and drop attachment
}
0 голосов
/ 31 января 2019

ООМ вам здесь не поможет.Теоретически вы можете перезаписать обработчик перетаскивания в Outlook.

  1. Получить дескриптор окна Инспектора с помощью интерфейса IOleWindow (вы можете преобразовать объект Inspector в IOleWindow).
  2. Получить существующий обработчик перетаскивания с помощью GetProp(hwnd, "OleDropTargetInterface") Windows API - приведите возвращенное значение к интерфейсу IDropTarget.Вам, вероятно, нужно поэкспериментировать с тем, какое дочернее окно инспектора является желаемой целью перетаскивания.
  3. Вызов RevokeDragDrop / RegisterDragDrop, передавая собственную реализацию IDropTarget.Эта реализация может затем (после выполнения того, что вам нужно сделать) вызвать оригинальный интерфейс IDropTarget, чтобы позволить Outlook продолжить работу по умолчанию.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...