2011-02-10 10 views
3

Я пишу надстройку для Outlook 2010. В какой-то момент ему нужно удалить элементы почты, выбранные в данный момент пользователем. Я использую следующий код, который работает достаточно хорошо:В надстройке для Outlook 2010, как я могу удалить операцию удаления?

Selection selectedMessages = Globals.ThisAddIn.Application.ActiveExplorer().Selection; 

// It is possible for a non-mail item to be part of this collection. (One example is when a calendar 
// item is in the deleted items folder. Select it and hit this delete button.) 
System.Collections.IEnumerator enumerator = selectedMessages.GetEnumerator(); 
while(enumerator.MoveNext()) 
{ 
    if (enumerator.Current is MailItem) 
    { 
    ((MailItem)(enumerator.Current)).Delete(); 
    } 
} 

Моя проблема заключается в том, что, когда я удаления сообщений таким образом, нормальный «отменить» операция недоступна для пользователя. Это : Возможно, пользователь может перейти в папку «Удаленные» и переместить сообщения обратно в папку «Входящие». Но это будет путать для пользователей, которые привыкли просто нажимать Ctrl-Z или маленькую стрелку «Отменить» в верхнем левом углу экрана.

Можно ли каким-либо образом зарегистрировать это действие с помощью механизма отмены или, возможно, вызвать «реальную» функцию удаления Outlook в сообщении, чтобы можно было автоматически отменить отмену?

ответ

1

Не удаляйте MailItem; переместите его в папку olFolderDeletedItems. Вы можете использовать GetDefaultFolder(), чтобы получить ссылку на эту папку; см. here.

+0

Спасибо за предложение, но это не сделало этого. Он удаляет почтовый элемент, но поведение команды Undo идентично использованию метода Delete в MailItem. Отменить нельзя. –

+0

@Mark: Хорошо. Я сделаю еще несколько исследований ... – CesarGon

+0

То же самое касается контактов? Я пытаюсь удалить их сейчас, но, возможно, я должен переместить их в 'olFolderDeletedItems'. Тем не менее, я хочу, чтобы мои контакты ушли навсегда. Есть ли такая папка, как 'olFolderReallyReallyTrulyDeletedItems'.? –