none
VSTO 2007 outlook Addin crashes RRS feed

  • Question

  • Hi,

    I am creating  VSTO 2007 outlook Addin using COM . It reads all the mailtems from outlook and marks(categories) the undelivered mail items as undelivered.

    I am using below code for marking the undelivered mail item as undelivered. The code marked in read colour crashes sometimes. Please suggest me the problem.

    HRESULT hrGetSelectedItem;

                    LPDISPATCH spOlSelectedItem  = NULL;               

                    CComPtr<Outlook::_Explorer> spExplorer;

                    //Locating the selected item

                    CComPtr<Outlook::Selection> spOlSel;

                    if(m_spApp)

                    {

                                    //Get the Currently Active Explorer on the top of Desktop

                                    hrGetSelectedItem         =  m_spApp->ActiveExplorer(&spExplorer);

                                    if(SUCCEEDED(hrGetSelectedItem))

                                    {

                                                    hrGetSelectedItem = spExplorer->get_Selection(&spOlSel);

                                                    if(FAILED(hrGetSelectedItem))

                                                    {  

                                    MessageBox(NULL,GetStringFromTable(IDS_SELECTITEM),MSGBOX_HEADER, MB_OK|MB_ICONINFORMATION);

                                                                    return ;

                                                    }

                                                    iMailIndex+=1;

                                                    VARIANT covIndex;

                                                    covIndex.vt = VT_I4;

                                                    covIndex.lVal = iMailIndex;

                                                    if(spOlSel)

                                                    {

                                                                    hrGetSelectedItem = spOlSel->Item(covIndex,&spOlSelectedItem);

                                                                     CComQIPtr <Outlook::_MailItem> spMailItem;

                                                                     if(spOlSelectedItem)

                                                                     {

                                                                                     hrGetSelectedItem = spOlSelectedItem->QueryInterface(&spMailItem);//Get The selected item

                                                                                     if(spMailItem)

                                                                                     {

                                                                                                     spMailItem->put_Categories(L"Undelivered");

                                                                                                     spMailItem->Save();

                                                                                     }

                                                                     }

                                                    }

                                    }

                    }              LPDISPATCH spOlSelectedItem  = NULL;               

                    CComPtr<Outlook::_Explorer> spExplorer;

                    //Locating the selected item

                    CComPtr<Outlook::Selection> spOlSel;

                    if(m_spApp)

                    {

                                    //Get the Currently Active Explorer on the top of Desktop

                                    hrGetSelectedItem         =  m_spApp->ActiveExplorer(&spExplorer);

                                    if(SUCCEEDED(hrGetSelectedItem))

                                    {

                                                    hrGetSelectedItem = spExplorer->get_Selection(&spOlSel);

                                                    if(FAILED(hrGetSelectedItem))

                                                    {  

                                                                    MessageBox(NULL,GetStringFromTable(IDS_SELECTITEM),MSGBOX_HEADER, MB_OK|MB_ICONINFORMATION);

                                                                    return ;

                                                    }

                                                    iMailIndex+=1;

                                                    VARIANT covIndex;

                                                    covIndex.vt = VT_I4;

                                                    covIndex.lVal = iMailIndex;

                                                    if(spOlSel)

                                                    {

                                                                    hrGetSelectedItem = spOlSel->Item(covIndex,&spOlSelectedItem);

                                                                     CComQIPtr <Outlook::_MailItem> spMailItem;

                                                                     if(spOlSelectedItem)

                                                                     {

                                                                                     hrGetSelectedItem = spOlSelectedItem->QueryInterface(&spMailItem);//Get The selected item

                                                                                     if(spMailItem)

                                                                                     {

                                                                                                     spMailItem->put_Categories(L"Undelivered");

                                                                                                     spMailItem->Save();

                                                                                     }

                                                                     }

                                                    }

                                    }

                    }

    Thanks in advance.

    Saturday, May 18, 2013 8:40 AM

All replies