В нашем представителе магазина сообщений MAPI мы представляем элементы электронной почты и без проспекта (офисные документы и т. Д.). Технически мы предоставляем эти документы как объект IMessage с одним вложением и конкретным PR_MESSAGE_CLASS
(например, IPM.Document.txtfile). Затем Outlook рассматривает этот объект как DocumentItem
, а не MailItem
.DocumentItem (IMessage) теряет приложение после открытия
Как вы можете видеть на скриншоте ниже, это отлично работает. Предварительный просмотрщик работает так, как ожидалось, двойной щелчок по элементу откроет элемент в соответствующем приложении (например, Блокнот).
Однако, после того, как элемент был открыт, когда внешнее приложение закрывается, что-то идет не так. Предварительный просмотр прерывается, и элемент нельзя открыть снова, пока не будет выбран другой элемент.
Согласно Outlook, Spy, наш IMessage
объект все еще прекрасно. Это ОЫЙ DocumentItem
обертки , что теперь как-то отсутствует, это вложение:
Что может быть причиной такого поведения? Есть ли обновление, которое нам не хватает? Является ли элемент Outlook представлением старого объекта IMessage, который поврежден? Мы уже провели немало исследований по этой теме, все указатели приветствуются!
[EDIT 1]
Вот Перспективы шпион изложили свою IMessage
объект все еще хорошо:
[EDIT 2]
Пока внешняя приложение не закрывается, все в порядке. Я могу открыть документ столько раз, сколько хочу, но как только я закрою один экземпляр внешнего зрителя, элемент Outlook получит «поврежденный».
Что такое IMessage | GetAttachmentTable показать? Можете ли вы пройти через свой код, чтобы увидеть вызовы Outlook при попытке повторно открыть элемент? –
IMessage | GetAttachmentTable в порядке, я обновлю ответ за минуту. При двойном щелчке элемента _after_ «вложение исчезло» Outlook не очень часто разговаривает с нашим поставщиком хранилища сообщений (один экземпляр compareEntryIDs/getIDsFromNames ... никаких вызовов в наш IMessage не происходит. –
Какие имена/идентификаторы запрашивает Outlook при вызове GetIDsFromNames? –