Ermitteln, ob ein Outlook-Element geändert, aber nicht gespeichert wurde (Outlook-Hilfsreferenz)
In diesem Thema wird veranschaulicht, wie Sie die dispidFDirty -Dispatch-ID verwenden, rufen Sie die entsprechende Eigenschaft für ein Outlook-Element, um festzustellen, ob das Element geändert wurde und nicht gespeichert wurde noch.
Item-Objekt können Sie die IUnknown::QueryInterface -Methode verwenden, um einen IDispatch -Schnittstellenzeiger zu erhalten. Die Funktion im Thema FIsItemDirty
akzeptiert den IDispatch-Zeigerpdisp als Eingabeparameter.
FIsItemDirty
ruft die IDispatch::Invoke-Methode auf, wobei dispidFDirty als Argument für den dispIdMember-Parameter und die Flags DISPATCH_METHOD | DISPATCH_PROPERTYGET
für wFlags angegeben werden, um zu überprüfen, ob das Element geändert wurde.
FIsItemDirty
gibt einen booleschen Wert zurück (True , um anzugeben, dass das Element nicht gespeicherte Änderungen aufweist, andernfalls 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;
}