/******************************************************************************* WebBrowserFF Explorador basado en el motor de Mozilla Creado por: Jesus Adan Gonzalez Niebla Fecha de creacion: Lunes 3 de Noviembre 2008 Ultima modificacion: 4 de Noviembre 2008 Cambio: Agregar una funcion para realizar cambios en la pagina cargada *******************************************************************************/ #region Espacios de nombres using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using AxMOZILLACONTROLLib; using MOZILLACONTROLLib; using mshtml; #endregion namespace WebBrowserFF { /// /// ActiveX WebBrowser basado en FireFox /// public class frmBrowser : System.Windows.Forms.Form { #region Controles de la aplicacion /// /// Control ActiveX con el que se controla a Mozilla FireFox /// private AxMOZILLACONTROLLib.AxMozillaBrowser WebBrowser; /// /// Required designer variable. /// private System.ComponentModel.Container components = null; #endregion #region Variables de la aplicacion /// /// Direccion de la pagina web /// private static string URL; /// /// Parte del codigo fuente que deseas que sea remplazado /// private static string codigoOriginal; /// /// Codigo que remplazara al codigo fuente original indicado /// private static string codigoNuevo; #endregion #region Constructores y destructores /// /// Navegador Web basado en Mozilla FireFox /// public frmBrowser() { // // Required for Windows Form Designer support // InitializeComponent(); // Variables de uso local object objeto = null; // Abrir esta pagina WebBrowser.Navigate(URL, ref objeto, ref objeto, ref objeto, ref objeto); } /// /// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #endregion #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(frmBrowser)); this.WebBrowser = new AxMOZILLACONTROLLib.AxMozillaBrowser(); ((System.ComponentModel.ISupportInitialize)(this.WebBrowser)).BeginInit(); this.SuspendLayout(); // // WebBrowser // this.WebBrowser.Dock = System.Windows.Forms.DockStyle.Fill; this.WebBrowser.Enabled = true; this.WebBrowser.Location = new System.Drawing.Point(0, 0); this.WebBrowser.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("WebBrowser.OcxState"))); this.WebBrowser.Size = new System.Drawing.Size(292, 266); this.WebBrowser.TabIndex = 0; this.WebBrowser.DocumentComplete += new AxMOZILLACONTROLLib.DWebBrowserEvents2_DocumentCompleteEventHandler(this.WebBrowser_DocumentComplete); // // frmBrowser // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.Add(this.WebBrowser); this.Name = "frmBrowser"; this.Text = "Mozilla WebBrowser"; ((System.ComponentModel.ISupportInitialize)(this.WebBrowser)).EndInit(); this.ResumeLayout(false); } #endregion #region Punto de entrada de la aplicacion /// /// Punto de entrada de la aplicacion /// /// Parametros recibidos por linea de comando [STAThread] static void Main(string[] args) { switch (args.Length) { case 1: // Se considera que se recibe una URL por parametro URL = args[0]; // Direccion de la pagina codigoOriginal = string.Empty; // Codigo que queremos remplazar codigoNuevo = string.Empty; // Codigo que queremos poner en la pagina Application.Run(new frmBrowser()); // Inicializar la ventana break; case 3: // URL, codigo a remplazar, remplazar con esto URL = args[0]; // Direccion de la pagina codigoOriginal = args[1]; // Codigo que queremos remplazar codigoNuevo = args[2]; // Codigo que queremos poner en la pagina Application.Run(new frmBrowser()); // Inicializar la ventana break; } } #endregion #region Funciones personalizadas /// /// Remplaza parte del codigo fuente de la pagina cargada en el explorador /// private void reemplazarCodigoFuentePaginaActual() { // Variables de uso local mshtml.IHTMLDocument2 doc; // Contenido de la pagina que exploramos string codigoFuente = string.Empty; // Codigo fuente de la pagina // Obtener el contenido de la pagina cargada en el explorador doc = (mshtml.IHTMLDocument2)WebBrowser.Document; // Extraer el codigo fuente del cuerpo de la pagina codigoFuente = doc.body.outerHTML; // Buscar y remplazar el codigo indicado con el codigo nuevo codigoFuente = codigoFuente.Replace(codigoOriginal, codigoNuevo); // Sobre escribir el codigo fuente de la pagina con nuestro codigo doc.body.innerHTML = codigoFuente; } #endregion #region Eventos de los controles /// /// Evento que se dispara cuando una pagina termina de cargarse en el explorador /// /// /// private void WebBrowser_DocumentComplete(object sender, AxMOZILLACONTROLLib.DWebBrowserEvents2_DocumentCompleteEvent e) { // Si hay que reemplazar alguna parte del codigo if ( (codigoOriginal.Length > 0) && (codigoNuevo.Length > 0) ) { reemplazarCodigoFuentePaginaActual(); } } #endregion } }