public unsafe object InvokeScript(string scriptName, object[] args) { object retVal = null; var dispParams = new Ole32.DISPPARAMS { rgvarg = IntPtr.Zero }; try { if (NativeHtmlDocument2.GetScript() is UnsafeNativeMethods.IDispatch scriptObject) { Guid g = Guid.Empty; string[] names = new string[] { scriptName }; Ole32.DispatchID dispid = Ole32.DispatchID.UNKNOWN; HRESULT hr = scriptObject.GetIDsOfNames(&g, names, 1, Kernel32.GetThreadLocale(), &dispid); if (hr.Succeeded() && dispid != Ole32.DispatchID.UNKNOWN) { if (args != null) { // Reverse the arg order so that parms read naturally after IDispatch. ( Array.Reverse(args); } dispParams.rgvarg = (args == null) ? IntPtr.Zero : HtmlDocument.ArrayToVARIANTVector(args); dispParams.cArgs = (args == null) ? 0 : (uint)args.Length; dispParams.rgdispidNamedArgs = IntPtr.Zero; dispParams.cNamedArgs = 0; object[] retVals = new object[1]; var pExcepInfo = new Ole32.EXCEPINFO(); hr = scriptObject.Invoke( dispid, &g, Kernel32.GetThreadLocale(), Oleaut32.DISPATCH.METHOD, &dispParams, retVals, &pExcepInfo, null); if (hr == HRESULT.S_OK) { retVal = retVals[0]; } } } } catch (Exception ex) when(!ClientUtils.IsSecurityOrCriticalException(ex)) { } finally { if (dispParams.rgvarg != IntPtr.Zero) { HtmlDocument.FreeVARIANTVector(dispParams.rgvarg, args.Length); } } return(retVal); }
public HtmlDocument OpenNew(bool replaceInHistory) { object name = (object)(replaceInHistory ? "replace" : ""); object nullObject = null; object ohtmlDocument = NativeHtmlDocument2.Open("text/html", name, nullObject, nullObject); return(ohtmlDocument is IHTMLDocument iHTMLDocument ? new HtmlDocument(ShimManager, iHTMLDocument) : null); }
public object InvokeScript(string scriptName, object[] args) { object retVal = null; NativeMethods.tagDISPPARAMS dp = new NativeMethods.tagDISPPARAMS { rgvarg = IntPtr.Zero }; try { if (NativeHtmlDocument2.GetScript() is UnsafeNativeMethods.IDispatch scriptObject) { Guid g = Guid.Empty; string[] names = new string[] { scriptName }; int[] dispids = new int[] { NativeMethods.ActiveX.DISPID_UNKNOWN }; int hr = scriptObject.GetIDsOfNames(ref g, names, 1, SafeNativeMethods.GetThreadLCID(), dispids); if (NativeMethods.Succeeded(hr) && (dispids[0] != NativeMethods.ActiveX.DISPID_UNKNOWN)) { if (args != null) { // Reverse the arg order so that parms read naturally after IDispatch. ( Array.Reverse(args); } dp.rgvarg = (args == null) ? IntPtr.Zero : HtmlDocument.ArrayToVARIANTVector(args); dp.cArgs = (args == null) ? 0 : args.Length; dp.rgdispidNamedArgs = IntPtr.Zero; dp.cNamedArgs = 0; object[] retVals = new object[1]; hr = scriptObject.Invoke(dispids[0], ref g, SafeNativeMethods.GetThreadLCID(), NativeMethods.DISPATCH_METHOD, dp, retVals, new NativeMethods.tagEXCEPINFO(), null); if (hr == NativeMethods.S_OK) { retVal = retVals[0]; } } } } catch (Exception ex) { if (ClientUtils.IsSecurityOrCriticalException(ex)) { throw; } } finally { if (dp.rgvarg != IntPtr.Zero) { HtmlDocument.FreeVARIANTVector(dp.rgvarg, args.Length); } } return(retVal); }
public unsafe object InvokeScript(string scriptName, object[] args) { try { if (NativeHtmlDocument2.GetScript() is Oleaut32.IDispatch scriptObject) { Guid g = Guid.Empty; string[] names = new string[] { scriptName }; Ole32.DispatchID dispid = Ole32.DispatchID.UNKNOWN; HRESULT hr = scriptObject.GetIDsOfNames(&g, names, 1, Kernel32.GetThreadLocale(), &dispid); if (!hr.Succeeded() || dispid == Ole32.DispatchID.UNKNOWN) { return(null); } if (args != null) { // Reverse the arg order so that they read naturally after IDispatch. Array.Reverse(args); } using var vectorArgs = new Oleaut32.VARIANTVector(args); fixed(Oleaut32.VARIANT *pVariants = vectorArgs.Variants) { var dispParams = new Oleaut32.DISPPARAMS(); dispParams.rgvarg = pVariants; dispParams.cArgs = (uint)vectorArgs.Variants.Length; dispParams.rgdispidNamedArgs = null; dispParams.cNamedArgs = 0; var retVals = new object[1]; var excepInfo = new Oleaut32.EXCEPINFO(); hr = scriptObject.Invoke( dispid, &g, Kernel32.GetThreadLocale(), Oleaut32.DISPATCH.METHOD, &dispParams, retVals, &excepInfo, null); if (hr == HRESULT.S_OK) { return(retVals[0]); } } } } catch (Exception ex) when(!ClientUtils.IsCriticalException(ex)) { } return(null); }
public HtmlElement CreateElement(string elementTag) { IHTMLElement iHTMLElement = NativeHtmlDocument2.CreateElement(elementTag); return(iHTMLElement != null ? new HtmlElement(ShimManager, iHTMLElement) : null); }
public HtmlElement GetElementFromPoint(Point point) { IHTMLElement iHTMLElement = NativeHtmlDocument2.ElementFromPoint(point.X, point.Y); return(iHTMLElement != null ? new HtmlElement(ShimManager, iHTMLElement) : null); }
public void ExecCommand(string command, bool showUI, object value) { NativeHtmlDocument2.ExecCommand(command, showUI, value); }
public void Write(string text) { object[] strs = new object[] { (object)text }; NativeHtmlDocument2.Write(strs); }