IDispatch *pdisp;
VARIANT    vtT[4]; if ((m_pipactive) && 
(SUCCEEDED(m_pipactive->QueryInterface(IID_IDispatch, (void**)&pdisp))))
{
vtT[0].vt = VT_I2; vtT[0].intVal = Type;
vtT[1].vt = VT_BOOL; vtT[1].boolVal = VARIANT_TRUE;
vtT[2].vt = VT_BSTR; vtT[2].bstrVal = ConvertToBSTR(PWD_STRING); DISPID dspid;
DISPPARAMS dspparm = {NULL, NULL, 0, 0};
dspparm.rgvarg = vtT;
dspparm.cArgs = 3;
LPOLESTR lpOleStr=L"Protect"; HRESULT hr = pdisp->GetIDsOfNames(IID_NULL, &lpOleStr, 1, LOCALE_SYSTEM_DEFAULT, &dspid);
        hr = pdisp->Invoke(dspid, IID_NULL, LOCALE_SYSTEM_DEFAULT,
            DISPATCH_METHOD, &dspparm, &vtT[3], NULL, NULL); pdisp->Release();
}
}