Привет всем!
Народ, сейчас работаю над проблемой работы с 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 или возможно знаете, как довести это до ума или вообще как всё сделать правильно, напишите решение этой проблемы. Может я не правильно импортирую библиотеку или не всё связанное с СОМ инициализирую...
Заранее благодарен!