/*******************************************************************************
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
}
}