Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

INTERFACE WEB SANS WINFORMS


Information sur la source

Catégorie :.NET Source .NET ( DotNet ) Classé sous : webbrowser, internetexplorer, javascript, intéraction, winforms Niveau : Expert Date de création : 21/12/2005 Date de mise à jour : 21/12/2005 10:33:46 Vu : 14 824

Note :
9,5 / 10 - par 6 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
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

  • //---------------------------------
  • //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;
  • }
//---------------------------------
//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.
 

Historique

21 décembre 2005 10:33:46 :
Quelques corrections du texte

Commentaires et avis

signaler à un administrateur
Commentaire de Nurgle le 21/12/2005 12:02:12 administrateur CS

Cool, on va pouvoir faire des trucs jolis ! :D
(en attendant WinFX, bien sûr !)

signaler à un administrateur
Commentaire de coq le 21/12/2005 12:20:48 administrateur CS

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

signaler à un administrateur
Commentaire de sebmafate le 22/12/2005 06:09:39 administrateur CS

bonne idée ;)

signaler à un administrateur
Commentaire de leproc le 24/12/2005 00:39:42

Personaliser le navigateur s'est une idée génial

signaler à un administrateur
Commentaire de poppyto le 24/12/2005 11:35:39 administrateur CS

C'est probablement le futur de la guéguère des navigateurs.

signaler à un administrateur
Commentaire de Elektordi le 02/03/2007 21:21:43

Pile de dont j'avait besoin, merci !

Juste un truc pour VS2005, penser à définir la classe C# associé avec [ComVisibleAttribute(true)]

signaler à un administrateur
Commentaire de ukos le 27/05/2008 16:12:13

Et'il possible de faire la meme chose en VB ?

signaler à un administrateur
Commentaire de Elektordi le 27/05/2008 21:48:35

Si tu fait du VB.NET, tu peux, vu que ca repose sur le Framework.NET
Si c'est du VB6 j'ai peur qu'il ne supporte pas le COM !

signaler à un administrateur
Commentaire de kaktusatomik le 28/10/2008 15:27:24 10/10

Super merci !
exactement ce que je cherchais!

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Webbrowser (Modifier une fonction javascript) [ par Booster ] Bonjour à tous,Alors, voila j'ai une fonction javascript sur un site, étant donné que la javascript est executer coté client j'aimerais savoir si il e [Expert] WebBrowser et objets Javascript [ par Gendal67 ] Bonsoir tout le monde,Après de longs moments à chercher une réponse vainement sur le web, je me permets de vous adresser mon petit problème :J'ai une Mettre du C# dans du javascript [ par Calvein ] J'ai hésiter à mettre cette question dans JS ou C# :pJ'explique mon problème, je travail sous VS2005 et dans mon site je doit y mettre une page concer Problème webbrowser [ par OLman135 ] Bonjour, je suis en train de réaliser une application avec un webbrowser.J'ai un problème, je souhaite utiliser les évènements document_completed ou n Mettre du code c# dans javascript [ par HamzaEco ] Bonjour, SVP, j'ai un petit problèm,J'ai une fonction en c#, que je veux l'éxecuter dans du javascriptvoila ce que j'ai fais, et ca ne marche pas :&lt contrôle webBrowser [ par berhue ] Bonjour à tous,J'utilise un contrôle webBrowser pour charger des fichiers HTML afin de les analyser à l'aide de la propriété 'document'.Pour charger l IHM: webBrowser: comment le réinitialiser [ par simlaboum ] Tagadatsointsoin!!! Création d'une instance d'Internet Explorer [ par scorpion322 ] Je souhaiterai de créer un instance d'internet Explorer ie7 sous Vista. --- Code -- SHDocVw.IWebBrowser2 webBrowser = SHDocVw.IWebBrowser2)internet Obtenir le WebBrowser d'un tabpage [ par Dacobah ] Bonjour à tous,j'aimerais savoir comment accéder au WebBrowser que j'ai mis dans un tabpage. J'ai vu que quelqu'un posait la même question pour une te Webbrowser + click sur un bouton automatiquement [ par espadon2 ] Bonjour a tous et a toutes.Voila mon soucis  :je dois recuperer des informations sur plusieurs pages web protégées par  login/passwordJusque ici  j' u


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,608 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.