Форум: "Основная";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];
ВнизMicrosoft Outlook не закрывается Найти похожие ветки
← →
Juice © (2005-06-09 18:20) [0]Для отправки почтового сообщения через Microsoft Outlook использую следующий код. Сообщение отправляется нормально, но после отправки outlook.exe продолжает висеть в процессах и при попытке отправить следующее письмо программа есс-но зависает.
В чем тут ошибка, я вроде как все правильно делаю ?
try
OutlookApp := GetActiveOleObject("Outlook.Application");
OutlookApp.AutoQuit := true;
except
try
OutlookApp := CreateOleObject("Outlook.Application");
except
Application.MessageBox("Äëÿ íàëåæíî¿ ðîáîòè ìîäóëÿ ïîòð³áåí Microsoft Outlook! Âñòàíîâ³òü öþ ïðîãðàììó òà ñïðîáóéòå ùå ðàç. ", "Âèíèêëà ïîìèëêà", MB_YESNO);
ExitProcess(0);
end;
end;
try
MailItem := OutlookApp.CreateItem(olMailItem);
case Self.TraderID of
5 : s := Self.Mail.toAdress_SAT;
985 : s := Self.Mail.toAdress_LTD;
else s := Self.Mail.toAdress_OTH;
end;
while Pos(",", s)<>0 do
begin
MailItem.Recipients.Add(Copy(s, 1, Pos(",", s)-1 ));
Delete(s, 1, Pos(",", s) );
s:=Trim(s);
end;
MailItem.Recipients.Add(s);
MailItem.Subject := "zvit " + qCustomer.FieldByName("SName").AsString +" "+ DateToStr(self.RprtDate);
MailItem.Body := "³äïîâ³äíî äî “Ïîëîæåííÿ ïðî ïîðÿäîê ñêëàäàííÿ àäì³í³ñòðàòèâíèõ äàíèõ ùîäî ä³ÿëüíîñò³ òîðãîâö³â ö³ííèìè ïàïåðàìè"+" òà ïîäàííÿ â³äïîâ³äíèõ äîêóìåíò³â äî ÄÊÖÏÔД, çàòâåðäæåíîãî ð³øåííÿì ÄÊÖÏÔÐ ¹279 â³ä 08.06.04ð. òà Íàêàçó ÄÊÖÏÔÐ ¹923 â³ä 27.09.04ð., íàäàºìî íåðåãóëÿðíó ³íôîðìàö³þ ç âèêîíàííÿ äîãîâîð³â Òîâàðèñòâîì ç îáìåæåíîþ â³äïîâ³äàëüí³ñòþ "+
qCustomer.FieldByName("SName").AsString + " (ë³öåç³ÿ " +
qCustomer.FieldByName("LicenseNumber").AsString + " â³ä " +
Date2text(qCustomer.FieldByName("LicenseDate").AsDateTime) + ") çà "+
Date2text(self.RprtDate);
myAttachments := MailItem.Attachments;
myAttachments.Add(Files.mFileName, olByValue, 1, "marc.dbf");
myAttachments.Add(Files.oFileName, olByValue, 1, "operate.dbf");
MailItem.Send;
finally
myAttachments := VarNull;
OutlookApp.Quit;
OutlookApp := VarNull;
end;
← →
Juice © (2005-06-10 11:09) [1]В поисках решения даже переточил этот код под компоненты со страницы Servers - ситуация аналогичная, и не только на моей машине! Что же это получается? Может его как-то по-особенному надо закрывать, в отличие от других серверов офиса ? Если кто-то сталкивался с таким траблом или раоборот, писал диспетчера для аутлука и проблемы не возникало - сообщите плз!
← →
Digitman © (2005-06-10 12:37) [2]
> при попытке отправить следующее письмо программа есс-но
> зависает
почему это "есс-но" ?
при выполнении какой строчке в твоем коде происходит это "есс-но" ?
> outlook.exe продолжает висеть в процессах
а почему бы ему не "висеть" ?
к примеру, юзер открыл Аутлук "ручками", создал там документ, начал его редактировать, "недоредактировал", бросил все и пошел пить кофе ... в это время как черт из табакерки являешься ты со своей программой, "цепляешься" (GetActiveOleObject) к заведомо существующему процессу олей-сервера (стартованному юзером "ручками" как обычное приложение и смиренно ожидающему возврата юзера после кофиепития), делаешь свои "черные дела") и с какого-то перепугу ожидаешь, что процесс по твоей команде будет немедленно завершен ..
как ты себе это мыслишь ?
почему юзер, таки явившись после кофиепития, должен быть неприятно огорчен внезапным исчезновением им стартованного процесса ?
← →
nightsoft © (2005-06-10 13:10) [3]и вообще, замет outlook пользовать ? а вдруг он не установлен на машине ?
есть другие пути отправки почты :) исходники послать ?
← →
Juice © (2005-06-10 19:11) [4]
> nightsoft © (10.06.05 13:10) [3]
> и вообще, замет outlook пользовать ? а вдруг он не установлен
> на машине ?
> есть другие пути отправки почты :) исходники послать ?
http://delphimaster.net/view/6-1117549229/
П.2 в особенно
> Digitman
Ну это конечно все очень правильно, но пока что юзером являюсь я, и кофе я вообще не пью. Если сервер автоматизации не используется то он должен уходить в даун а не висеть в памяти. Обьясню иначе -
1) аутлук не вивсит в памяти
2) выполняется этот код
3) аутлук висит в памяти
← →
Juice © (2005-06-10 22:59) [5]А если быть честным то он у меня и не зависает вовсе, просто я вижу что дело обстоит не так, как полагается. А зависать приложение начинает на машинах у пользователей, причем сам тому свидетель, и даже кофея с коньяком не надо :)
← →
nikkie © (2005-06-10 23:23) [6]ты случайно этот код не в консольном приложении пишешь? OleInitialize/OleUninitialize сам вызываешь?
← →
Juice © (2005-06-10 23:46) [7]Пишу в gui, приложение однопоточное. OleInitialize/OleUninitialize не вызываю. А зачем ?
← →
nikkie © (2005-06-11 01:03) [8]если бы вызывал - могла бы быть ошибка с подсчетом ссылок из-за неправильного порядка вызова (OleUninitialize раньше, чем освобождение интерфейса).
могу посоветовать присвоить Null и MailItem. если не поможет - начать последовательно комментировать строки и определить минимальный код, который приводит к зависанию аутлука.
← →
Anatoly Podgoretsky © (2005-06-11 08:53) [9]Juice © (10.06.05 19:11) [4]
но пока что юзером являюсь я, и кофе я вообще не пью.
Juice © (10.06.05 22:59) [5]
А зависать приложение начинает на машинах у пользователей, причем сам тому свидетель, и даже кофея с коньяком не надо :)
Не находишь противоречия?
← →
Juice © (2005-06-11 14:24) [10]Нахожу. Каюсь. Но к делу это ведь не относится ?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.037 c