2015-01-28 4 views
1

JclMAPI에 문제가 있습니다. 현재 Delphi XE3에서 JCL 2.6 Build 5178을 사용하고 있습니다.

내 응용 프로그램의 주요 형식은 다른 MDIChild 양식을 처리하는 MDIForm입니다. 이 중 하나에서 모달 형식을 표시 할 수 있으며 JclSimpleBringUpSendMailDialog은 모달 양식 핸들 ParentWND 매개 변수를 지정합니다.

일반적으로이 방법은 전자 메일 메시지 창을 모달 폼 앞에 엽니 다.
내 문제는 전자 메일 메시지 창이 응용 프로그램 mainForm 아래로 가끔 더 이상 앞으로 나올 수 없다는 것입니다.

그래서 응용 프로그램이 Jcl 메서드의 반환 값을 기다리고 다시 활성화 할 수 없습니다. 문제는 전자 메일 창이 내 응용 프로그램 뒤에 있기 때문에 메시지를 작성할 수 없다는 것입니다.
나는 인터넷 검색에서 운이 없었습니다.

혹시이 문제가 발생 했습니까?JclMapi - 전자 메일 메시지 창이 주 양식 아래로 이동합니다.

답변

1

단순 MAPI 대신 Outlook 개체 모델을 사용하도록 전환 할 수 있습니다. 이 방법을 사용하면 메시지를 표시하기 전에 Outlook의 기본 창을 먼저 포 그라운드로 가져올 수 있습니다. Outlook의 HWND는 Explorer 개체 (IOeWindow에 Application.ActiveExplorer 구매 반환)를 캐스팅하고 IOleWindow.GetWindow를 호출하여 검색 할 수 있습니다. HWND가 있으면 다음과 같은 것을 사용하여 포 그라운드로 가져올 수 있습니다.

+0

Outlook은 Thunderbird보다 Outlook을 모두 지원해야하므로 JclMAPI 개체를 사용해야합니다. – blackmes4

+0

여전히 Outlook이 설치되어 있는지 확인하고 포 그라운드로 가져올 수 있습니다. Simple MAPI 만 사용하면 필요한 것을 할 방법이 없습니다. –

+0

대부분의 경우 JclMapi 함수는 "작동합니다": Outlook이나 Thunderbird가 닫힌 경우에도 새 전자 메일 메시지 창이 응용 프로그램 앞에 올바르게 표시되지만 때로는 그렇지 않습니다. 개발 환경에서 문제를 재현 할 수 없기 때문에 문제를 일으키는 올바른 조건이 무엇인지 정확히 말할 수 없습니다. Outlook Object Model을 사용한다는 것은 내 응용 프로그램의 메일 링 시스템의 큰 부분을 변경한다는 의미이며이 솔루션을 지금 채택 할 수는 없지만 한 번 사용해 보겠습니다. 다른 솔루션이 없으면 Outlook Object Model을 사용합니다. – blackmes4