我使用VSTO + VS 2008开发了一个Outlook 2003插件。
有一个VB 6应用程序,它创建一个Outlook邮件实例,附加一个文档并显示给用户发送。
当用户点击“发送”按钮时,邮件窗口会冻结。它仅在生产机器上发生。
VB6代码如下:
Private Sub Command1_Click()
Dim objOlApp As New Outlook.Application
Dim objMailItem As Outlook.MailItem
Dim objAttachments As Attachments
Dim arrFilesToAttach(1) As String
Set objOlApp = New Outlook.Application
Set objMailItem = objOlApp.CreateItem(olMailItem)
Set objAttachments = objMailItem.Attachments
arrFilesToAttach(0) = Text1.Text
For l = 0 To 0
strTemp = arrFilesToAttach(l)
If strTemp <> "" Then
objAttachments.Add arrFilesToAttach(l)
End If
Next
objMailItem.Display True
Set objOlApp = Nothing
Set objMailItem = Nothing
Set objAttachments = Nothing
End Sub
要查看我的插件是否正在创建问题。我创建了一个简单的outlook addin并在启动事件Inside try ... catch block中添加了一些File IO代码。我禁用了以前的插件并安装了这个新的插件。
结果令人惊讶,样本插件也造成了问题。它将注册表中的LoadBehaviour更改为2以获取示例插件。 try ... catch块没有捕获异常。我已经为Appdomain的unhandledException添加了一个处理程序,但是也没有被解雇。
请帮忙......先谢谢。
答案 0 :(得分:1)
如果outlook正在为你的插件将loadbehaviour改为2,那通常意味着关于该插件的某些内容在加载期间出错,而outlook正在禁用它。
所有+种类的原因,addin可能在加载时出错(缺少引用的dll,权限等),这是一个问题。
要确定您的插件是否挂起发送过程,只需禁用您的插件(例如将set loadbehavior设置为0)。不需要为此创建示例插件。
如果在禁用插件的情况下工作正常,但启用时失败,则插件中可能出现错误。
那时,我所做的就是开始“释放”代码块。
我的意思是我开始评论入口点(或评论所有入口点并一次取消注释)。
例如,如果你在Startup事件中发生了一些事情,请将其注释掉,重新编译并测试。如果没有失败,请删除评论,并在链的上方注释其他内容。
我也倾向于使用大量的日志记录(通常使用Log4Net,但你可以使用任何东西)。