Comunicar WindowsForm Con Web y JavaScript con C#


Bien en este post veremos como comunicar un pequeño programa que tiene un Control WebBrowser, este accederá a una pagina en html que tendremos en local y utilizará JavaScript para Obtener Datos Simples dentro de otro WebBrowser

Lista de Elementos del Window Form:

  • BrowOrigen(WebBrowser)
  • BrowDestino(WebBrowser)
  • ObtieneDatos(Boton)
  • InvocaAlert(Boton)
  • Mensaje(TextBox)

Primero comenzaremos con el html que debe quedar más o menos asi:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>EjemploWindowsFromWebJavaScript HTML</title>
<script language="javascript" type="text/javascript">
function getMensaje() {
return document.getElementById('Mensaje').innerHTML;
}
function getFragmento() {
return document.getElementById('Fragmento').innerHTML;
}
</script>
</head>
<body>
<div id="Mensaje">Este Mensaje lo ver&aacute;s en el TextBox de la Aplicaci&oacute;n</div>
<div id="Fragmento"><h2 style="color:#0066FF;">Este es un Fragmento que ver&aacute;s en el WebBrowser</h2></div>
</body>
</html>

Dentro de la información de HTML es necesario que las etiquetas de JavaScript contengan los Tags language y type. Despues veremos que el form visualmente debe quedar así:

Luego nos de dicaremos a la parte interesante que es loque trae dentro queda de la manera siguiente:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace EjemploWindowFormWebJavaScript
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string url = AppDomain.CurrentDomain.BaseDirectory + "html\\index.html";
BrowOrigen.Url = new Uri(url);
}
private void InvocaAlert_Click(object sender, EventArgs e)
{
try
{
HtmlDocument htdoc = BrowOrigen.Document;
Mensaje.Text = htdoc.InvokeScript("getMensaje").ToString();
MessageBox.Show(Mensaje.Text);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void ObtieneDatos_Click(object sender, EventArgs e)
{
HtmlDocument htdoc = BrowOrigen.Document;
BrowDestino.DocumentText = htdoc.InvokeScript("getFragmento").ToString();
}
}
}

Si notamos bien lo que nos ayuda a ejecutar funciones de JavaScript es InvokeScript, pueden descargar el ejemplo y jugar con el.

Descargar Ejemplo

Anuncios

Acerca de Francisco Castán

Creador, Diseñador, Investigador y Programador de Software Lenguajes Preferidos: C/C++, C#, Java, PHP, Python, PERL, Shell, JavaScript

Publicado el 08/12/2010 en .Net y etiquetado en , . Guarda el enlace permanente. Deja un comentario.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: