Visiteurs: 1135
Aujourd'hui: 1

En ligne
4 Visiteurs, 0 Membre, 0 Modérateur, 0 Administrateur En ligne.

Total : 4
 
Rss WebBrowser et COM
Je suis présentement à la découverte du composant WebBrowser avec lequel j’essaie de le faire interagir avec une Form de mon application. Le tout par le biais de COM (Component Object Model). Rien de bien compliqué au premier abord. Voici le code que Micosoft suggère :

Code VB :
 
Imports System
Imports System.Windows.Forms
Imports System.Security.Permissions
 
Public Class Form1
  Inherits Form
 
  Private webBrowser1 As New WebBrowser()
  Private WithEvents button1 As New Button()
 
  Public Shared Sub Main()
	  Application.EnableVisualStyles()
	  Application.Run(New Form1())
  End Sub
 
  Public Sub New()
	  button1.Text = "call script code from client code"
	  button1.Dock = DockStyle.Top
	  webBrowser1.Dock = DockStyle.Fill
	  Controls.Add(webBrowser1)
	  Controls.Add(button1)
  End Sub
 
  Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
	  webBrowser1.AllowWebBrowserDrop = False
	  webBrowser1.IsWebBrowserContextMenuEnabled = False
	  webBrowser1.WebBrowserShortcutsEnabled = False
	  webBrowser1.ObjectForScripting = Me
	  ' Uncomment the following line when you are finished debugging.
	  'webBrowser1.ScriptErrorsSuppressed = True
	  webBrowser1.DocumentText = _
		  "<script type="text/javascript"><!–mce:0–></script><button> " &amp; _
		  "call client code from script code</button>" &amp; ""
  End Sub
 
  Public Sub Test(ByVal message As String)
	  MessageBox.Show(message, "client code")
  End Sub
 
  Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles button1.Click
	  webBrowser1.Document.InvokeScript("test", New String() {"called from client code"})
  End Sub
 
End Class
 


Bref, rien de bien compliquer. Mais voilà que quand je teste l’application, j’ai une erreur de script avec comme message que “window.external” est de référence NULL ou inatteignable. Finalement, la solution est vraiment bête. Dans les options de votre application (je suis sous VS2008) à partir de l’onglet “Application” cliquez sur “Informations de l’assembly…” et vous devez activer la case à cocher “Rendre l’assembly visible par COM” Et voilà! Tout fonctionne à merveille. Je vous invite à consulter l’aide du composant WebBrowser pour plus de détail sur le code et ce composant qui est très pratique pour afficher simplement une page web ou faire comme moi une interface dynamique entre une Form et une page Web.
 
 
Note: Aucune note
(0 note)
Ecrit par: Rawheadrex, Le: 21/02/10