Jacek Caban (@jacek) commented about dlls/mshtml/htmlelem.c:
{DISPID_IHTMLELEMENT_FILTERS},
{DISPID_IHTMLELEMENT_ONDRAGSTART},
{DISPID_IHTMLELEMENT_TOSTRING},
{DISPID_IHTMLELEMENT_ONBEFOREUPDATE},
{DISPID_IHTMLELEMENT_ONAFTERUPDATE},
{DISPID_IHTMLELEMENT_ONERRORUPDATE},
{DISPID_IHTMLELEMENT_ONROWEXIT},
{DISPID_IHTMLELEMENT_ONROWENTER},
{DISPID_IHTMLELEMENT_ONDATASETCHANGED},
{DISPID_IHTMLELEMENT_ONDATAAVAILABLE},
{DISPID_IHTMLELEMENT_ONDATASETCOMPLETE},
{DISPID_IHTMLELEMENT_ONFILTERCHANGE},
{DISPID_IHTMLELEMENT_CHILDREN},
{DISPID_IHTMLELEMENT_ALL},
{DISPID_UNKNOWN}
- };
That's cryptic... you're filtering 52 out of 56 `IHTMLElement`'s dispids. To understand what you're doing here, I'd need to cross-check all of them to find out what's not present in this table. It seems to me that what you need here is a way to specify dispids that are actually meant to be exposed instead. It should be easy to have an optional allow-list in `process_interface` and a new helper like `dispex_info_add_dispids` exposing that.