我遇到了一個奇怪的問題,即導出水晶報表會導致顯示MAPI地址簿時出現問題。這是兩個完全不相關的任務,我不明白一個人如何影響另一個。爲什麼導出Crystal Report會導致我的MAPI地址簿引發一些問題?
這是導出報表的例子:
Using rpt As New TestReport
rpt.ExportToStream(ExportFormatType.PortableDocFormat)
End Using
這是顯示MAPI地址簿的例子:
Dim msg As New AxMSMAPI.AxMAPIMessages
Dim sess As New AxMSMAPI.AxMAPISession
Dim f As System.Reflection.FieldInfo
Const MAPI_LICENSE As String = "mgkgtgnnmnmninigthkgogggvmkhinjggnvm"
f = GetType(AxHost).GetField("licenseKey", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Instance)
f.SetValue(msg, MAPI_LICENSE)
f.SetValue(sess, MAPI_LICENSE)
sess.Parent = Me
msg.Parent = Me
sess.DownLoadMail = False
sess.LogonUI = True
sess.SignOn()
sess.NewSession = True
msg.SessionID = sess.SessionID
msg.Compose()
msg.Action = MSMAPI.MessagesActionConstants.mapShowAddressBook
sess.SignOff()
一個奇怪的事情是,如果我表現出的MAPI地址簿首先,然後導出水晶報表並在程序的剩餘時間顯示MAPI地址簿工作。如果我先導出,則MAPI地址簿在程序的剩餘時間內不起作用。
獲取引發的異常是在下面的行爲「未指定的故障發生」與我MAPI代碼和錯誤代碼「-2146796286」
msg.Action = MSMAPI.MessagesActionConstants.mapShowAddressBook
這是用Crystal 13.0.2000.0和MAPI 1.1.0.0 – BahKoo 2013-03-21 19:43:36