Compartilhar via


Determinar se um item do Outlook foi modificado, mas não salvo (Referência Auxiliar do Outlook)

Este tópico mostra como usar a identificação de expedição de dispidFDirty para chamar a propriedade correspondente em um item do Outlook, para ver se o item foi modificado e não foi salvo.

Dado um objeto de item, você pode usar o método IUnknown::QueryInterface para obter um ponteiro de interface IDispatch . A função no tópico FIsItemDirty aceita um ponteiro IDispatch , pdisp, como um parâmetro de entrada. FIsItemDirty chama o método IDispatch::Invoke , especificando dispidFDirty como o argumento para o parâmetro dispIdMember e os sinalizadores DISPATCH_METHOD | DISPATCH_PROPERTYGET para wFlags, para verificar se o item foi modificado. FIsItemDirty retorna um valor booliano (True para indicar que o item tem alterações não salvas; caso contrário, False).

bool FIsItemDirty(IDispatch *pdisp)
{
    DISPPARAMS dispparams;
    UINT uArgErr;
    HRESULT hr = S_OK;
    CComVariant varDirty;
    dispparams.rgvarg = 0;
    dispparams.cArgs = 0;
    dispparams.cNamedArgs = 0;
    dispparams.rgdispidNamedArgs = NULL;
    hr = pdisp->Invoke(dispidFDirty,
        IID_NULL,
        LOCALE_SYSTEM_DEFAULT,
        DISPATCH_METHOD | DISPATCH_PROPERTYGET,
        &dispparams,
        &varDirty,
        NULL,
        &uArgErr);
    return SUCCEEDED(hr) && varDirty.bVal;
}

Confira também