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.
Загрузили так, что сразу попробовать нет времени.
|
|