Interface web sans winforms

0/5 (9 avis)

Snippet vu 30 519 fois - Téléchargée 31 fois

Contenu du snippet

Bonjour à tous.

En tant que webmaster, je me suis interressé à la réalisation de programmes en C# en utilisant uniquement un contrôle Internet Explorer (WebBrowser). En effet, de nos jours il est beaucoup plus aisé de réaliser une interface "spéciale" en HTML plutôt qu'avec des contrôles Windows. En partant de ce constat, il nous manque la méthode pour faire intéragir C# et IE. En effet, le but de la manoeuvre est de créer divers Liens HTML et d'appeler des méthodes issues du programme en C# à partir de ces liens, et aussi de pouvoir faire des appels Javascript depuis C#.

---------------------------------
INVOKE de HTML(Javascript) à C#
---------------------------------

La solution se fait en 3 étapes:
-Déclarer la classe ( celle dont les méthodes seront appelés du WebBrowser) avec l'attribue [ComVisible] à true
-Donner la valeur "this" à la propriété ObjectForScripting de l'objet WebBrowser
-Utiliser window.external.NomFonction(); pour appeler les focntions de C# via HTML.

---------------------------------
INVOKE de C# à HTML(Javascript)
---------------------------------

Une seule étape suffit !

- Utiliser la méthode InvokeScript de l'objet Document contenu dans l'objet WebBrowser
->C#

Et bien voilà, maintenant vous avez tous les outils pour réaliser des logiciels avec un minimum de WinForms.
Ce n'est pas très compliqué et ça promet !

Source / Exemple :


//---------------------------------
//INVOKE de HTML(Javascript) à C#
//---------------------------------
//->C#

using System.Runtime.InteropServices;

[ComVisible(true)]
class Form1
{
   System.Windows.Forms.WebBrowser WebBrowser1;

   Form1()
   {
        InitializeComponent();
        this.WebBrowser1.ObjectForScripting = this;
   }
   public void Test()
   {
      MessaegBox.Show("Coucou je suis C#!");
   }

}

//->HTML (Javscript)

<a href="javascript:window.external.Test();">Appel à C#</a>

//---------------------------------
//INVOKE de C# à HTML(Javascript)
//---------------------------------
//->C#

//passage de 2 arguments à la fonction coucou
Object[] objArray = new Object[1];
objArray[0] = (Object)"salut";
objArray[1] = (Object)"ça va?";
object result = WebBrowser.Document.InvokeScript("coucou")

//->JavaScript

function coucou(param1,param2)
{
	alert(param1 + param2);
   return true;
}

Conclusion :


Comme à ma grande habitude je ne mets pas les sources car tout est dans le tutorial.

A voir également

Ajouter un commentaire Commentaires
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
21 déc. 2005 à 12:02
Cool, on va pouvoir faire des trucs jolis ! :D
(en attendant WinFX, bien sûr !)
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
21 déc. 2005 à 12:20
Ouep, c'est assez pratique de temps en temps :-)
Un exemple d'application de la chose pour ceux qui ne se représentent pas trop le truc :
Les wizard de création de projet, notamment C++, sous VS.Net (pour VS 2005 je ne sais plus) : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_CORE_Overview_of_Creating_a_Custom_AppWizard.asp
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 36
22 déc. 2005 à 06:09
bonne idée ;)
leproc Messages postés 81 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 22 octobre 2008
24 déc. 2005 à 00:39
Personaliser le navigateur s'est une idée génial
kaktusatomik Messages postés 2 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 10 juin 2008
28 oct. 2008 à 15:27
Super merci !
exactement ce que je cherchais!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.