Microsoft KB Archive/922275

= How to use Visual C# to call a VBScript function on a Web page that is loaded in an ActiveX WebBrowser control in a Windows Forms application =

Article ID: 922275

Article Last Modified on 11/22/2007

-

APPLIES TO


 * Microsoft Visual C# 2005 Express Edition
 * Microsoft Visual C# .NET 2003 Standard Edition
 * Microsoft Visual C# .NET 2002 Standard Edition

-





INTRODUCTION
This article describes how to use Microsoft Visual C# to call a Microsoft Visual Basic Scripting Edition (VBScript) function on a Web page. Specifically, the Web page is loaded in an ActiveX WebBrowser control in a Windows Forms application.

To perform the procedures in the &quot;More Information&quot; section, you must already have the following items:  A Visual C# Windows Forms application that contains an ActiveX WebBrowser control.

For more information about how to add an ActiveX control to a Windows Forms application, visit the following Microsoft Developer Network (MSDN) Web site:

http://msdn2.microsoft.com/en-us/library/1w560tdz.aspx

 A Web page that contains at least one VBScript function.

For more information about VBScript, visit the following MSDN Web site:

http://msdn2.microsoft.com/en-us/library/t0aew7h6.aspx



Note The procedures in this article apply only to Windows Forms applications that contain an ActiveX WebBrowser control. If you are using a managed Windows Forms WebBrowser control in your application, do not perform the procedures in this article. For more information about the Windows Forms WebBrowser control, visit the following MSDN Web site:

http://msdn2.microsoft.com/en-us/library/2te2y1x6.aspx



MORE INFORMATION
The following procedures demonstrate how to call a VBScript function on a Web page that is loaded in an ActiveX WebBrowser control.

Add a reference to the Microsoft HTML Object Library (Mshtml.tlb)
Before you can call a VBScript function in an ActiveX WebBrowser control from a Windows Forms application, you must add a reference to the Microsoft HTML Object Library. To do this, follow these steps:
 * 1) Start Microsoft Visual Studio .NET or Microsoft Visual Studio 2005.
 * 2) On the File menu, point to Open, and then click Project.

Note In Visual Studio 2005, click Project/Solution.
 * 1) Locate the project that you want to open, and then click Open.
 * 2) On the Project menu, click Add Reference.
 * 3) Click the COM tab.
 * 4) Select Microsoft HTML Object Library, click Select, and then click OK.

Note In Visual Studio 2005, select Microsoft HTML Object Library, and then click OK.

Add a method that calls the VBScript function
After you add a reference to the Microsoft HTML Object Library, you can add a method that calls a VBScript function on a Web page that is loaded in an ActiveX WebBrowser control.

The following code sample demonstrates how to call a VBScript function on a Web page that is loaded in an ActiveX WebBrowser control. This code sample uses the IHTMLDocument.Script property in the Microsoft HTML Object Library to obtain access to the scripting object. The code sample then uses the InvokeMember method to call the VBScript function.

Note Replace  in the following code with the name of the ActiveX WebBrowser control instance that occurs in your application.

private object InvokeScript(string sFunction,object[] oParameters) {   object oReturn = null; mshtml.IHTMLDocument Doc = (mshtml.IHTMLDocument)this.axWebBrowser1.Document; Type ScriptEng = Doc.Script.GetType; try {       oReturn = ScriptEng.InvokeMember(sFunction, System.Reflection.BindingFlags.InvokeMethod, null, Doc.Script, oParameters); }   catch(Exception ex) {       MessageBox.Show(&quot;Error invoking function: &quot; + ex.Message,&quot;InvokeScript - Exception&quot;, MessageBoxButtons.OK, MessageBoxIcon.Warning); }   return oReturn; } You can call this method by passing the name of the VBScript function and the parameters. The following code sample demonstrates how to use the previous code sample to call a VBScript function that has a parameter value of 100.

Note The VBScript function is named myVBScriptFunction. String myFunction = &quot;myVBScriptFunction&quot;; Object[] myParameters = { 100 }; InvokeScript(myFunction, myParameters);

