webbrowser net navigate ejemplo chrome asp .net winforms webbrowser-control
código de ejemplo

.net - net - webbrowser url c#



Acercar una página web usando el control WebNET de.NET (6)

En IE7 hay una función de "zoom" incorporada (se muestra en la barra de estado), que le permite acercar hasta un 400%. Estoy usando el control .NET de WebBrowser en una aplicación de demostración / simulación, y necesito acercarme a una página web. ¿Es esto posible?

(No quiero simplemente tomar una foto de la página y ampliarla, ya que necesito usar los enlaces y botones de la página).

Estoy usando .NET 2.0 si importa.


Consejo fácil:

//Zoom IN webBrowser1.Focus(); SendKeys.Send("^{+}"); // [CTRL]+[+] //Zoom OUT webBrowser1.Focus(); SendKeys.Send("^-"); // [CTRL]+[-] //Zoom 100% webBrowser1.Focus(); SendKeys.Send("^0"); // [CTRL]+[0]


Esto funciona para mí:

int zoomFactor = 300; ((SHDocVw.WebBrowser)webBrowser1.ActiveXInstance).ExecWB(SHDocVw.OLECMDID.OLECMDID_OPTICAL_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, zoomFactor, IntPtr.Zero);

Parece que esto se puede hacer solo después de que el documento ha sido cargado.


Para cualquier persona que tenga el mismo problema que yo, aquí hay una modificación de la respuesta de Gloupi que debería funcionar en más sistemas internacionales donde las teclas más y menos están en diferentes ubicaciones mediante el uso de las teclas de signo numérico. Esto también corrige el zoom dentro y fuera de los diseños dvorak.

// zoom in webBrowser1.Focus(); SendKeys.Send("^{ADD}"); // zoom out webBrowser1.Focus(); SendKeys.Send("^{SUBTRACT}"); // zoom reset webBrowser1.Focus(); SendKeys.Send("^0");


Puedes usar CSS:

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { webBrowser1.Document.Body.Style = "zoom:50%"; }


Tenga en cuenta que el valor del factor que usted pasa a la función de zoom supone que un valor de 100 corresponde al tamaño "normal" de la página web. Los valores más altos del factor significan que estás "acercándote", por lo que la página parece más grande. Los valores más pequeños del factor significan que está "alejándose", por lo que la página parece más pequeña. Encontré que un incremento razonable entre los factores es 10.


Parece que hay una solución en IE Zoom que consiste en anular AttachInterfaces y DetachInterfaces en WebBrowser para obtener una interfaz IWebBrowser2 y luego llamar a ExecWB con OLECMDID_OPTICAL_ZOOM .

He intentado su código de ejemplo y parece funcionar; La clase relevante (resumida) se ve así:

using System; using System.Windows.Forms; using System.Runtime.InteropServices; namespace ZoomBrowser { public partial class MyBrowser : WebBrowser { #region enums public enum OLECMDID { // ... OLECMDID_OPTICAL_ZOOM = 63, OLECMDID_OPTICAL_GETZOOMRANGE = 64, // ... } public enum OLECMDEXECOPT { // ... OLECMDEXECOPT_DONTPROMPTUSER, // ... } public enum OLECMDF { // ... OLECMDF_SUPPORTED = 1 } #endregion #region IWebBrowser2 [ComImport, /*SuppressUnmanagedCodeSecurity,*/ TypeLibType(TypeLibTypeFlags.FOleAutomation | TypeLibTypeFlags.FDual | TypeLibTypeFlags.FHidden), Guid("D30C1661-CDAF-11d0-8A3E-00C04FC9E26E")] public interface IWebBrowser2 { [DispId(100)] void GoBack(); [DispId(0x65)] void GoForward(); [DispId(0x66)] void GoHome(); [DispId(0x67)] void GoSearch(); [DispId(0x68)] void Navigate([In] string Url, [In] ref object flags, [In] ref object targetFrameName, [In] ref object postData, [In] ref object headers); [DispId(-550)] void Refresh(); [DispId(0x69)] void Refresh2([In] ref object level); [DispId(0x6a)] void Stop(); [DispId(200)] object Application { [return: MarshalAs(UnmanagedType.IDispatch)] get; } [DispId(0xc9)] object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] get; } [DispId(0xca)] object Container { [return: MarshalAs(UnmanagedType.IDispatch)] get; } [DispId(0xcb)] object Document { [return: MarshalAs(UnmanagedType.IDispatch)] get; } [DispId(0xcc)] bool TopLevelContainer { get; } [DispId(0xcd)] string Type { get; } [DispId(0xce)] int Left { get; set; } [DispId(0xcf)] int Top { get; set; } [DispId(0xd0)] int Width { get; set; } [DispId(0xd1)] int Height { get; set; } [DispId(210)] string LocationName { get; } [DispId(0xd3)] string LocationURL { get; } [DispId(0xd4)] bool Busy { get; } [DispId(300)] void Quit(); [DispId(0x12d)] void ClientToWindow(out int pcx, out int pcy); [DispId(0x12e)] void PutProperty([In] string property, [In] object vtValue); [DispId(0x12f)] object GetProperty([In] string property); [DispId(0)] string Name { get; } [DispId(-515)] int HWND { get; } [DispId(400)] string FullName { get; } [DispId(0x191)] string Path { get; } [DispId(0x192)] bool Visible { get; set; } [DispId(0x193)] bool StatusBar { get; set; } [DispId(0x194)] string StatusText { get; set; } [DispId(0x195)] int ToolBar { get; set; } [DispId(0x196)] bool MenuBar { get; set; } [DispId(0x197)] bool FullScreen { get; set; } [DispId(500)] void Navigate2([In] ref object URL, [In] ref object flags, [In] ref object targetFrameName, [In] ref object postData, [In] ref object headers); [DispId(0x1f5)] OLECMDF QueryStatusWB([In] OLECMDID cmdID); [DispId(0x1f6)] void ExecWB([In] OLECMDID cmdID, [In] OLECMDEXECOPT cmdexecopt, ref object pvaIn, IntPtr pvaOut); [DispId(0x1f7)] void ShowBrowserBar([In] ref object pvaClsid, [In] ref object pvarShow, [In] ref object pvarSize); [DispId(-525)] WebBrowserReadyState ReadyState { get; } [DispId(550)] bool Offline { get; set; } [DispId(0x227)] bool Silent { get; set; } [DispId(0x228)] bool RegisterAsBrowser { get; set; } [DispId(0x229)] bool RegisterAsDropTarget { get; set; } [DispId(0x22a)] bool TheaterMode { get; set; } [DispId(0x22b)] bool AddressBar { get; set; } [DispId(0x22c)] bool Resizable { get; set; } } #endregion private IWebBrowser2 axIWebBrowser2; public MyBrowser() { } protected override void AttachInterfaces( object nativeActiveXObject) { base.AttachInterfaces(nativeActiveXObject); this.axIWebBrowser2 = (IWebBrowser2)nativeActiveXObject; } protected override void DetachInterfaces() { base.DetachInterfaces(); this.axIWebBrowser2 = null; } public void Zoom(int factor) { object pvaIn = factor; try { this.axIWebBrowser2.ExecWB(OLECMDID.OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, ref pvaIn, IntPtr.Zero); } catch (Exception) { throw; } } } }