Работа с Redemption.dll на VC++
От: Emiter_Collector3.3  
Дата: 03.10.06 11:09
Оценка:
Привет всем!

Народ, сейчас работаю над проблемой работы с Outlook на основе Redemption.dll(здесь).
Читал описание и примеры, которые приводятся на VB и которые кстати прекрасно реализуются. Пытался "перетянуть" в VC++.

Импортирую библиотеку в хэдере таким вот макаром:

#import "D:\program files\Redemption\Redemption.dll" rename_namespace("Redemption"), named_guids
using namespace Redemption;


Далее пытаюсь залогинится в Outlook-профиль, для чего Redemption предлагает объект RDOSession и метод Logon(...). Вот описание метода:


Logon(ProfileName, Password, ShowDialog, NewSession, ParentWindowHandle, NoMail)

//Описание параметров
ProfileName — string, optional. If ProfileName is not specified or is an empty string, the default profile is used.

Password — string, optional.Presently this parameter is only used by the PST provider if the PST store is protected with a password. This is *not* a Windows account password.

ShowDialog — boolean, optional. If true, the dialog selection dialog is used.

NewSession — boolean, optional. If true, a new MAPI session is created; if false, RDO will try to connect to the existing MAPI session

ParentWindowHandle — integer, optional. Window handle of the window to be used as the parent of the dialogs shown by Logon()

NoMail — boolean, optional. If true, MAPI session is initialized with starting the MAPI spooler.


Теперь привожу код инициализации объекта и попытки "залогинится" при помощи Logon(...) метода
HRESULT OLLogon()
{
    CoInitialize( NULL );

    HRESULT hResult = S_OK;

    Redemption::IRDOSession * pRDOSession = NULL;
    hResult = CoCreateInstance( Redemption::CLSID_RDOSession, NULL, CLSCTX_INPROC_SERVER, Redemption::IID_IRDOSession, (void **)&pRDOSession );

    _variant_t ProfileName( "Outlook" );
    _variant_t Password( "" );
    _variant_t ShowDialog( FALSE );
    _variant_t NewSession( FALSE );
    _variant_t ParentWindowHandle( NULL );
    _variant_t NoMail( FALSE );

    hResult = pRDOSession->Logon( ProfileName, Password, ShowDialog, NewSession, ParentWindowHandle, NoMail );
    //hResult = pRDOSession->Logon( "Outlook", "", FALSE, FALSE, NULL, FALSE );

    ::MessageBox( NULL, "OK!", "OK!", MB_OK );

    hResult = pRDOSession->Logoff();

    hResult = pRDOSession->Release();
    pRDOSession = NULL;

    CoUninitialize();
    return S_OK;
}


Но ничего так и не выходит. Постоянно выбрасывает ошибку и отказывается работать.

Большая просьба, может Вы уже работали с Outlook и Redemption.dll или возможно знаете, как довести это до ума или вообще как всё сделать правильно, напишите решение этой проблемы. Может я не правильно импортирую библиотеку или не всё связанное с СОМ инициализирую...

Заранее благодарен!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.