2011-05-07 50 views
0

我发现的代码在互联网上下面的代码片段,它从一个模板创建一个电子邮件:的COM InvokeHelper问题

LPDISPATCH _Application::CreateItemFromTemplate(LPCTSTR TemplatePath, const VARIANT& InFolder) 
{ 
    LPDISPATCH result; 
    static BYTE parms[] = 
     VTS_BSTR VTS_VARIANT; 
    InvokeHelper(0x10b, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms, 
     TemplatePath, &InFolder); 
    return result; 
} 

,我有这个代码的问题是它需要的最后一个参数有一个文件夹。我的代码没有文件夹,发送后的电子邮件将被上传到另一个应用程序。我曾尝试通过NULL作为最后一个参数,但这只是引发异常。

所有我想要实现的是打开使用它的用户的Outlook桌面可见模板的电子邮件。因此,我的问题是我应该如何通过这个InvokeHelper方法的参数?它只是最后一个参数,或者最后一个参数是NULL,但是其他参数改变了,如果是这样的话?

感谢

+0

的[DISPID和打开电子邮件(可能重复http://stackoverflow.com/questions/5923871/DISPID和 - 开的电子邮件) – 2011-05-08 00:51:57

回答

0

试试这个代码:

try 
{ 
    long rc = -1; 
    static BYTE parms[] = VTS_BSTR VTS_BSTR VTS_BSTR VTS_BSTR VTS_BSTR VTS_I2; 

    m_eventDispatchDriver.InvokeHelper(0x6003000c, DISPATCH_METHOD, VT_I4, (void*)&rc, parms, 
             _UDATA(strSubject), 
             _UDATA(strBody), 
             _UDATA(strBody), 
             _UDATA(strRecipients), 
             _UDATA(strAttachments), 
             0 /*SendWithMailToIfOLDown*/); 

    if (rc == 0) 
     return RESULT_OK; 
    else 
     return RESULT_E_FAIL; 
} 
catch(COleDispatchException *pExeption) 
{ 
    _UCHAR szError[256]; 
    pExeption->GetErrorMessage(szError, 256); 
    LOG(failure: %s", _UADATA(strCommand), szError); 
    return RESULT_E_FAIL; 
} 

其中:

strSubject = “”

strAttachments = “”

strRecipients =“[email protected]

strBody =“”

你以后这个工作,你可以用参数玩...

+0

BTW-所有的字符串都类型UString的 – eladyanai 2012-02-21 09:51:24