HOWTO: Call a Script Function from a VC WebBrowser Application
ID: Q185127
|
The information in this article applies to:
-
Microsoft Internet Explorer (Programming) versions 4.0, 4.01, 5.0
SUMMARY
When hosting the WebBrowser control in a Visual C++ application, you may
wish to execute a script function that exists on a Web page. This article
demonstrates how to do this.
MORE INFORMATION
In order to call a script function that exists on a Web page, you have to
use automation; in other words, IDispatch. Use the following steps to
invoke a script function that exists on a Web page from your Visual C++
application:
- Get the IDispatch of the HTML document.
- Call IDispatch::GetIDsOfNames to get the ID of the script function.
- Call IDispatch::Invoke to execute the function.
The following Visual C++ source code demonstrates how to implement this in
your own application. This code uses smart pointers created by the #import
statement. You must include this #import statement in one of your source
code files, preferably Stdafx.h:
#import "C:\winnt\system32\mshtml.tlb" // location of mshtml.tlb
void CMyClass::ExecuteScriptFunction()
{
// m_WebBrowser is an instance of IWebBrowser2
MSHTML::IHTMLDocument2Ptr spDoc(m_WebBrowser.GetDocument());
if (spDoc)
{
IDispatchPtr spDisp(spDoc->GetScript());
if (spDisp)
{
// Evaluate is the name of the script function.
OLECHAR FAR* szMember = L"evaluate";
DISPID dispid;
HRESULT hr = spDisp->GetIDsOfNames(IID_NULL, &szMember, 1,
LOCALE_SYSTEM_DEFAULT, &dispid);
if (SUCCEEDED(hr))
{
COleVariant vtResult;
static BYTE parms[] = VTS_BSTR;
COleDispatchDriver dispDriver(spDisp);
dispDriver.InvokeHelper(dispid, DISPATCH_METHOD, VT_VARIANT,
(void*)&vtResult, parms,
"5+Math.sin(9)");
}
}
}
}
The following is the HTML for the Web page that contains the evaluate
function:
<HTML>
<HEAD>
<TITLE>Evaluate</TITLE>
<SCRIPT>
function evaluate(x)
{
alert("hello")
return eval(x)
}
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
REFERENCES
This source code is based on the Visual Basic sample that appears in the
March/April 1998 edition of MSDN News. Please refer to this edition for
information about how to execute a script function from a Visual Basic
application that is hosting the WebBrowser control.
(c) Microsoft Corporation 1998, All Rights Reserved. Contributions by Scott
Roberts, Microsoft Corporation
Additional query words:
kbDSupport kbdsi
Keywords : kbcode kbIE400 kbIE401 kbWebBrowser kbIE500 AXSDKWebBrowser kbIEFAQ
Version : WINDOWS:4.0,4.01,5.0
Platform : WINDOWS
Issue type : kbhowto