2017-09-25 17 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이 열리면 VB.NET과 더 이상 관련이 없습니다. 나는 해커가 될 수있는 방법을 찾지 못한다. 실제로, 그것은 배경 스레드이기 때문에, 나는 그것이 정말로 가도 상관하지 않습니다. 나는 그저 사용자가 이메일을 최소화 할 수 있기를 원한다. 그것을 다루지 않아도됩니다. 작업 표시 줄의 다른 프로그램을 클릭하고 그 이메일을 뒷면으로 보낼 수 있지만 모든 사용자가 그럴 수 있다는 것을 알지 못합니다.

답변

0

나는 내 자신의 문제를 해결했습니다. 내 문제가이 줄에서 나온 것으로 나타났습니다.

omsg.Display(True) 

이렇게하면 설명한대로 열립니다. 더 많거나 적게 스레드를 잠그십시오. 그러나 :

omsg.Display 

은 내 모든 문제를 해결합니다. 내가 본 원래의 예제 코드는 그것을 좋아했고 당신이 그것을 바꿀 수 있다는 것을 깨닫지 못했습니다. 나는 배경 작업자가 필요하다고 생각하지 않지만 그것을 변경하지는 않는다.

어쨌든 해결되었습니다. 보고 주셔서 감사합니다;)