| andylit | 
| Отправлено: 18.10.2006, 05:53 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 15
 
 
 
  
 | В проекте использую компонент для работы с Outlook. Все нормально. Что хотел — делаю, но при закрытии программы автоматически закрывается и Outlook. Вроде в проекте авто отключено: [CODE]
 AutoQuit = false;
 ConnectKind = ckNewInstance;
 [CODE]
 Как этого избежать?
 
 
 | 
|  | 
| gvg | 
| Отправлено: 18.10.2006, 12:43 |  | 
| 
 Машинист паровоза
 
 Группа: Участник
 Сообщений: 222
 
 
 
  
 | У меня была та же история (билдер5). Как только перестал использовать компоненты, работая напрямую — все стало нормально. | 
|  | 
| andylit | 
| Отправлено: 18.10.2006, 12:59 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 15
 
 
 
  
 | Код при этом сильно меняется? Никогда не работал напрямую. Если можете сбросьте примерчик. Чем хорошо через компонент, то там можно через VB видеть разного рода классы и их свойства... А напрямую нужна какая-то дока, наверно...
 
 | 
|  | 
| gvg | 
| Отправлено: 18.10.2006, 14:41 |  | 
| 
 Машинист паровоза
 
 Группа: Участник
 Сообщений: 222
 
 
 
  
 | Вот подключение 
 | CODE |  | bool __fastcall TveForm::ConnectToOutlook() {
 bool ret = false;
 char *AppProgID = "Outlook.Application";
 ServerIsRunning = false;
 Log.Add( "[Подключение к Outlook]" );
 try
 {
 App = Variant::GetActiveObject( AppProgID );
 ServerIsRunning = true;
 ret = true;
 }
 catch(...)
 {
 try
 {
 App = Variant::CreateObject( AppProgID );
 ret = true;
 }
 catch(...)
 {
 MessError( "Возможно, Outlook не установлен..." );
 Log.Add( "\t- ошибка подключения!" );
 }
 }
 if( ret )
 {
 NS = App.OleFunction( "GetNamespace", "MAPI" ); //"WideString( "MAPI" ));
 Log.Add( "[Поиск папок в Outlook]" );
 ret = PT.FindFolders( NS );
 if( !ret )
 {
 MessError( "Найдены не все папки Outlook!" );
 Log.Add( "\t- не все папки найдены!" );
 }
 }
 return( ret );
 }
 
 | 
 А это пример работы
 
 | CODE |  | if( FilesExistsAS( mask ))
 {
 WideString msgname;
 Variant mi;
 Variant fldr = ns.OleFunction( "GetDefaultFolder", 4 ); //olFolderOutbox );
 veForm->Log.Add( "Отправка файлов..." );
 if( fldr.VInteger )
 {
 mi = fldr.OlePropertyGet( "Items" ).OleFunction( "Add" );
 if( mi.VInteger )
 {
 int attr = faReadOnly | faHidden | faSysFile | faArchive | faAnyFile;
 TSearchRec F;
 if( !FindFirst( mask, attr, F )) do
 {
 if( !( F.Attr & faDirectory ))
 {
 veForm->Log.Add( AnsiString( "\tотправляем " ) + F.Name );
 // добавляем в сообщение
 mi.OlePropertyGet( "Attachments" ).OleProcedure( "Add", tl->oipath + F.Name );
 ....
 ....
 }
 } while( !FindNext( F ));
 FindClose( F );
 // отправляем в Outlook
 mi.OlePropertySet( "To", WideString( tl->orcvr ).c_bstr());
 mi.OleProcedure( "Save" );
 mi.OleProcedure( "Send" );
 }
 }
 }
 
 | 
 отключение
 
 | CODE |  | void __fastcall TveForm::DisconnectFromOutlook()
 {
 if( !ServerIsRunning )
 App.OleProcedure( "Quit" );
 }
 
 | 
 | 
|  | 
| andylit | 
| Отправлено: 25.10.2006, 04:28 |  | 
| 
 Ученик-кочегар
 
 Группа: Участник
 Сообщений: 15
 
 
 
  
 | Спасибо gvg. Загрузили так, что сразу попробовать нет времени.
 | 
|  |