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.