Hi Andreas, On 5/6/19 10:21 PM, Andreas Maier wrote:
+ case DISPID_GLOBAL_TESTENUMOBJ: + { + HRESULT hres; + + if (wFlags == (INVOKE_PROPERTYPUT|INVOKE_PROPERTYPUTREF)) + { + ok(wFlags == (INVOKE_PROPERTYPUT|INVOKE_PROPERTYPUTREF), "wFlags = %x\n", wFlags); + ok(pdp != NULL, "pdp == NULL\n"); + ok(pdp->rgvarg != NULL, "rgvarg == NULL\n"); + ok(pdp->rgdispidNamedArgs != NULL, "rgdispidNamedArgs == NULL\n"); + ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs); + ok(pdp->cNamedArgs == 1, "cNamedArgs = %d\n", pdp->cNamedArgs); + ok(!pvarRes, "pvarRes != NULL\n"); + if ((pdp->rgvarg != NULL) && + (pdp->cArgs == 1) && + (pdp->cNamedArgs == 1) && + (pdp->rgdispidNamedArgs[0] == DISPID_PROPERTYPUT)) + { + if (!testEnumObjValid) + { + memset(&testEnumObj, 0, sizeof(VARIANT)); + testEnumObjValid = TRUE; + VariantInit(&testEnumObj); + } + else + VariantClear(&testEnumObj); + hres = VariantCopy(&testEnumObj, pdp->rgvarg); + ok(SUCCEEDED(hres), "VariantCopy failed!\n"); + } + } + else + { + ok(wFlags == INVOKE_PROPERTYGET, "wFlags = %x\n", wFlags); + ok(pdp != NULL, "pdp == NULL\n"); + ok(!pdp->rgvarg, "rgvarg != NULL\n"); + ok(!pdp->rgdispidNamedArgs, "rgdispidNamedArgs != NULL\n"); + ok(!pdp->cArgs, "cArgs = %d\n", pdp->cArgs); + ok(!pdp->cNamedArgs, "cNamedArgs = %d\n", pdp->cNamedArgs); + ok(pvarRes != NULL, "pvarRes == NULL\n"); + + if ((pvarRes != NULL) && (testEnumObjValid)) + { + hres = VariantCopy(pvarRes, &testEnumObj); + ok(SUCCEEDED(hres), "VariantCopy failed!\n"); + } + } + return S_OK; + }
Why do you need this? Note that if testNumObj would be not found in the host object, jscript will handle it for you. Thanks, Jacek