webbrowser ejemplo control chrome c# winforms com webbrowser-control

c# - ejemplo - webbrowser properties



Error grave en el código Custom WebBrowser(winforms) (1)

Obteniendo una excepción fatal en el código CustomWebBrowser (winforms).

" El tiempo de ejecución ha encontrado un error fatal. La dirección del error estaba en 0x6c9a60c6, en el hilo 0xf94. El código de error es 0xc0000005. Este error puede ser un error en el CLR o en las partes inseguras o no verificables del código de usuario. Las fuentes comunes de este error incluyen errores de clasificación de usuarios para COM-interop o PInvoke, que pueden dañar la pila. "

Esto funciona bien en máquinas que tienen .Net Framework 4.5 instalado, pero no en máquinas con .Net framework 4.0

// constructor public AutoCompleteWebBrowserSite(WebBrowser host) : base(host) { // get the CCW object for this _unkOuter = Marshal.GetIUnknownForObject(this); Marshal.AddRef(_unkOuter); try { // aggregate the CCW object with the helper Inner object _inner = new AutoCompleteHelper(this); _unkInnerAggregated = Marshal.CreateAggregatedObject(_unkOuter, _inner); // obtain private WebBrowserSite COM interfaces try { _baseIDocHostUiHandler = (WebBrowserNativeMethods.IDocHostUIHandler) Marshal.GetTypedObjectForIUnknown(_unkInnerAggregated,typeof (WebBrowserNativeMethods.IDocHostUIHandler)); } catch(Exception) } finally { Marshal.Release(_unkOuter); } }

Se lanzó la excepción en _baseIDocHostUiHandler = (WebBrowserNativeMethods.IDocHostUIHandler)Marshal.GetTypedObjectForIUnknown(_unkInnerAggregated,typeof (WebBrowserNativeMethods.IDocHostUIHandler));

También intenté deshabilitar la recolección de basura simultánea al deshabilitar gcConcurrent en el archivo app.config

Cualquier ayuda sería realmente apreciada.


Básicamente necesita eliminar todo el código del constructor (principalmente _baseIDocHostUiHandler)

Y luego, en la implementación de WebBrowserSite, intente devolver el valor de implementación predeterminado para cada uno de los métodos.

private const int DefaultImpVal = unchecked((int)0x80004001) #region IDocHostUIHandler int WebBrowserNativeMethods.IDocHostUIHandler.ShowContextMenu(int dwId, ref WebBrowserNativeMethods.Point pt, IntPtr pcmdtReserved, IntPtr pdispReserved) { return DefaultImpVal ; } int WebBrowserNativeMethods.IDocHostUIHandler.ShowUI(int dwId, IntPtr activeObject, IntPtr commandTarget, IntPtr frame, IntPtr doc) { return DefaultImpVal; }

de manera similar para otros métodos.