private void _webView2_NavigationStarting(object sender, Wrapper.NavigationStartingEventArgs e) { string navigationTargetUri = e.Uri; if (_sampleUri == navigationTargetUri) { //! [AddRemoteObject] // _remoteObject = new RemoteObjectSampleNet(); string progId = "RemoteComObjectImpl.1"; Type comType = Type.GetTypeFromProgID(progId, true); //Guid clsId = new Guid("19C0E72A-9D34-4F10-A92E-1119F53D1645"); //Type comType = Type.GetTypeFromCLSID(clsId, true); _remoteObject = Activator.CreateInstance(comType); // VARIANT remoteObjectAsVariant = { }; // m_remoteObject.query_to<IDispatch>(&remoteObjectAsVariant.pdispVal); // remoteObjectAsVariant.vt = VT_DISPATCH; // We can call AddRemoteObject multiple times in a row without // calling RemoveRemoteObject first. This will replace the previous object // with the new object. In our case this is the same object and everything // is fine. _webView2.AddRemoteObject("sample", ref _remoteObject); // remoteObjectAsVariant.pdispVal->Release(); //! [AddRemoteObject] } else { // We can call RemoveRemoteObject multiple times in a row without // calling AddRemoteObject first. This will produce an error result // so we ignore the failure. _webView2.RemoveRemoteObject("sample"); // When we navigate elsewhere we're off of the sample // scenario page and so should remove the scenario. _parent.DeleteComponent(this); } }