[英]How can Outlook addin detect when an account is removed
我從 Outlook 獲得帳戶,如下所示。
Outlook.NameSpace ns = null;
Outlook.Accounts accounts = null;
Outlook.Account account = null;
string accountList = string.Empty;
try
{
ns = OutlookApp.Session;
accounts = ns.Accounts;
for (int i = 1; i <= accounts.Count; i++)
{
account = accounts[i];
accountList += String.Format("{0} - {1}{2}",
account.UserName,
account.SmtpAddress,
Environment.NewLine);
if (account != null)
Marshal.ReleaseComObject(account);
}
MessageBox.Show(accountList);
}
finally
{
if (accounts != null)
Marshal.ReleaseComObject(accounts);
if (ns != null)
Marshal.ReleaseComObject(ns);
}
但是,Outlook 會返回帳戶,包括已刪除的帳戶。
刪除帳戶時似乎沒有發生任何事件。
賬戶被移除后,有沒有辦法獲取被移除賬戶以外的賬戶? 如何獲取不包括已刪除帳戶的帳戶?
Outlook object model 沒有為此提供任何事件。 您可以做的最好的事情是處理Stores.BeforeStoreRemove事件,該事件在即將從當前Store
中以編程方式或通過用戶操作刪除時觸發。 以下是 MSDN 對該事件的說明:
Outlook 必須運行才能觸發此事件。 當發生以下任何情況時,將觸發此事件:
用戶通過單擊快捷菜單上的Close
命令來刪除商店。
通過調用Namespace.RemoveStore
以編程方式刪除存儲。
當發生以下任何情況時,此事件不會觸發:
當 Outlook 關閉並關閉主存儲或委托存儲時。
如果通過 Microsoft Windows 控制面板中的郵件小程序刪除了商店,並且 Outlook 未運行。
Microsoft Exchange Server 對話框的高級選項卡上刪除了委托存儲。
當 Outlook 未運行時,將通過帳戶管理器對話框的數據文件選項卡刪除存儲。
從配置文件中刪除 IMAP 存儲。
您可以使用此事件來確定商店已被刪除,並在您的應用程序需要該商店時采取適當的措施(例如重新安裝該商店)。 否則,您將不得不求助於輪詢 Stores 集合。
在 MAPI 級別(C++ 或 Delphi),帳戶事件是通過IOlkAccountManager::Advise方法實現的。 您可以在OutlookSpy中看到事件觸發(單擊 IOlkAccountManager 按鈕,go 到 Advise 選項卡)。
Outlook Object Model 不公開這些事件。 如果使用Redemption是一個選項,它會通過RDOAccounts object - AccountChange, AccountAdd, AccountRemove, AccountBeforeRemove, AccountOrderChange
公開所有帳戶事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.