2011-05-07 48 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