我需要在Outlook VSTO項目中模仿地址簿控件。使用真正的控制將會簡單得多,不是嗎?展望VSTO是否可以使用地址簿控件?
那麼,你知道一種方法來公開地址簿控件,並獲得內部選擇嗎?
編輯:沒關係,重新創建控件的基本版本將是方式easyer。
我需要在Outlook VSTO項目中模仿地址簿控件。使用真正的控制將會簡單得多,不是嗎?展望VSTO是否可以使用地址簿控件?
那麼,你知道一種方法來公開地址簿控件,並獲得內部選擇嗎?
編輯:沒關係,重新創建控件的基本版本將是方式easyer。
解決方案:第三方Redemption庫提供此功能。
RedemptionLoader.RDOSession.AddressBook.ShowAddressBook(...)
你並不需要使用第三方插件。你可以用這個做到這一點:
http://msdn.microsoft.com/en-us/library/office/ff868361.aspx
下面這段代碼在VBA,但你可以很容易地將其轉換爲C#:
Sub SelectRecipients()
Dim oMsg As MailItem
Set oMsg = Application.CreateItem(olMailItem)
Dim oDialog As SelectNamesDialog
Set oDialog = Application.Session.GetSelectNamesDialog
With oDialog
.InitialAddressList = _
Application.Session.GetGlobalAddressList
.Recipients = oMsg.Recipients
If .Display Then
'Recipients Resolved
oMsg.Subject = "Hello"
oMsg.Send
End If
End With
End Sub
確實,但我必須展望2003年時兼容,救贖在這個項目上多次拯救了我們的生命,值得我們花費每一分錢。 – Vinzz 2013-03-15 13:51:59
另外請記住,Outlook不允許您在顯示地址簿時指定父窗口句柄,因此主窗口將位於窗口之上。使用Redemption可以在調用ShowAddressBook時傳遞父窗口句柄。 – 2013-03-15 14:45:40
根據德米特里的提議,我碰到了父母窗口的問題,因爲那樣,那種糟糕的贖罪行爲肯定會更好。我遇到了其他問題試圖獲得贖回工作(根據我對這個問題的評論:http://stackoverflow.com/questions/15423081/in-my-vsto-outlook-app-why-does-calling-selectnamesdialog -display-移動-MY-FO/15423383?noredirect = 1個#comment21814413_15423383 – leora 2013-03-15 21:23:04