Com InvokeHelper问题

时间:2011-05-07 22:48:44

标签: com

我在互联网上找到了以下代码片段,它会从模板中创建一封电子邮件:

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,但其他参数是否已更改,如果是这样的话?

由于

1 个答案:

答案 0 :(得分: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 =“name@addr.com”

strBody =“”

使用后,您可以使用参数...