2017-09-25 39 views
0

所以只需要清楚,我已经得到了这个“工作”(又名它是可用的)。这里是我的代码:在vb.net中打开一个填充的outlook电子邮件,然后关闭线程

Dim Outl As Object 
      Outl = CreateObject("Outlook.Application") 
      If Outl IsNot Nothing Then 
       Dim omsg As Object 
       omsg = Outl.CreateItem(0) 
       omsg.cc = UserId 
       omsg.subject = "CRIT " & eventId & " - " & shortSummary & "" 
       omsg.body = reportBody 
       omsg.Display(True) 'will display message to user 
       EmailExportBackgroundWorker.CancelAsync() 
       EmailExportBackgroundWorker.Dispose() 
      End If 
     End If 

这不正是我需要的,只是一对夫妇的挑剔的东西。实际上,vb.net就像我打开一个对话窗口一样对待它,它正在等待用户在继续之前用弹出的电子邮件执行某些操作。在此期间,我将自己的程序转移到了后台工作人员身上,但是自己打开的电子邮件有一些我想解决的问题。

主要是它不能被最小化,最小化按钮是灰色的。它也开放最大化,而不是最大的交易,但烦人。最后它被列为无响应。不是的,您可以完成填写并发送,但显示为无响应。

我想要做的就是打开电子邮件,然后完成它!一旦VB.NET打开,它就没有更多的功能。我只是无法找到一个方法,即使是一个黑客,做到这一点。事实上,由于它是后台线程,我甚至不在乎它是否放弃。我只是希望用户能够最小化电子邮件,直到他们选择使用它。不会被迫处理它。您可以点击任务栏中的其他程序,然后将电子邮件发送回去,但并非所有用户都意识到这是可能的。

回答

0

我解决了我自己的问题。原来我的问题来自这条线:

omsg.Display(True) 

这导致它打开它,正如我所描述的。或多或少锁定线程。然而:

omsg.Display 

修复了我所有的问题。我见过的原始示例代码就是这样,我不知道你可以改变它。我甚至不认为我现在需要后台工作人员,但没有改变它。

无论如何,解决了。感谢您的期待;)

相关问题