Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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    := "&#194;&#179;&#228;&#239;&#238;&#226;&#179;&#228;&#237;&#238; &#228;&#238; “&#207;&#238;&#235;&#238;&#230;&#229;&#237;&#237;&#255; &#239;&#240;&#238; &#239;&#238;&#240;&#255;&#228;&#238;&#234; &#241;&#234;&#235;&#224;&#228;&#224;&#237;&#237;&#255; &#224;&#228;&#236;&#179;&#237;&#179;&#241;&#242;&#240;&#224;&#242;&#232;&#226;&#237;&#232;&#245; &#228;&#224;&#237;&#232;&#245; &#249;&#238;&#228;&#238; &#228;&#179;&#255;&#235;&#252;&#237;&#238;&#241;&#242;&#179; &#242;&#238;&#240;&#227;&#238;&#226;&#246;&#179;&#226; &#246;&#179;&#237;&#237;&#232;&#236;&#232; &#239;&#224;&#239;&#229;&#240;&#224;&#236;&#232;"+" &#242;&#224; &#239;&#238;&#228;&#224;&#237;&#237;&#255; &#226;&#179;&#228;&#239;&#238;&#226;&#179;&#228;&#237;&#232;&#245; &#228;&#238;&#234;&#243;&#236;&#229;&#237;&#242;&#179;&#226; &#228;&#238; &#196;&#202;&#214;&#207;&#212;&#208;”, &#231;&#224;&#242;&#226;&#229;&#240;&#228;&#230;&#229;&#237;&#238;&#227;&#238; &#240;&#179;&#248;&#229;&#237;&#237;&#255;&#236; &#196;&#202;&#214;&#207;&#212;&#208; &#185;279 &#226;&#179;&#228; 08.06.04&#240;. &#242;&#224; &#205;&#224;&#234;&#224;&#231;&#243; &#196;&#202;&#214;&#207;&#212;&#208; &#185;923 &#226;&#179;&#228; 27.09.04&#240;., &#237;&#224;&#228;&#224;&#186;&#236;&#238; &#237;&#229;&#240;&#229;&#227;&#243;&#235;&#255;&#240;&#237;&#243; &#179;&#237;&#244;&#238;&#240;&#236;&#224;&#246;&#179;&#254; &#231; &#226;&#232;&#234;&#238;&#237;&#224;&#237;&#237;&#255; &#228;&#238;&#227;&#238;&#226;&#238;&#240;&#179;&#226; &#210;&#238;&#226;&#224;&#240;&#232;&#241;&#242;&#226;&#238;&#236; &#231; &#238;&#225;&#236;&#229;&#230;&#229;&#237;&#238;&#254; &#226;&#179;&#228;&#239;&#238;&#226;&#179;&#228;&#224;&#235;&#252;&#237;&#179;&#241;&#242;&#254; "+
               qCustomer.FieldByName("SName").AsString + " (&#235;&#179;&#246;&#229;&#231;&#179;&#255; " +
                qCustomer.FieldByName("LicenseNumber").AsString + " &#226;&#179;&#228; " +
                 Date2text(qCustomer.FieldByName("LicenseDate").AsDateTime) + ") &#231;&#224; "+
                  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
14-1118563788
sofs
2005-06-12 12:09
2005.07.11
Какие пренципиальые различия ...


14-1118349832
Ломброзо
2005-06-10 00:43
2005.07.11
Пятничная задачка.


14-1118838198
Lexa
2005-06-15 16:23
2005.07.11
Красивые таблички


11-1102185895
Владимир Кладов
2004-12-04 21:44
2005.07.11
Версия 2.02


6-1112683496
Axer
2005-04-05 10:44
2005.07.11
Из Ethernet в Com-порт





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский