在C++中用WebBrowser控件调用JavaScript函数
主要函数 CallJScript
BOOL CallJScript(const wchar_t * func, VARIANT * vtParams, int cNumberOfParam, VARIANT * vtResult)
{
if(!func || !func[0])
return FALSE;
CComPtr<IDispatch> spScript;
spScript = GetJScript();
if(!spScript)
return FALSE;
DISPID dispID = NULL;
CComBSTR bstrFunc(func);
HRESULT hr = spScript->GetIDsOfNames(IID_NULL, &bstrFunc, 1, LOCALE_SYSTEM_DEFAULT, &dispID);
if(FAILED(hr))
return FALSE;
DISPPARAMS dispParams = {0};
dispParams.cArgs = cNumberOfParam;
dispParams.rgvarg = new VARIANT[cNumberOfParam];
for(int i = 0; i < cNumberOfParam; ++i)
{
VariantInit(&dispParams.rgvarg[i]);
VariantCopy(&dispParams.rgvarg[i], &vtParams[cNumberOfParam - 1 - i]);
}
hr = spScript->Invoke(dispID, IID_NULL, 0, DISPATCH_METHOD, &dispParams, vtResult, NULL, NULL);
delete [] dispParams.rgvarg;
if(FAILED(hr))
return FALSE;
return TRUE;
}
其它函数
IHTMLDocument2 * GetIDocument2()
{
if(!m_pWebBrowser2) return NULL;
IDispatch *pIDispatch = NULL;
if (SUCCEEDED(m_pWebBrowser2->get_Document(&pIDispatch)) && pIDispatch)
{
IHTMLDocument2 *pIDocument2 = NULL;
if (SUCCEEDED(pIDispatch->QueryInterface(IID_IHTMLDocument2, (void**)&pIDocument2)))
{
pIDispatch->Release();
return pIDocument2;
}
pIDispatch->Release();
}
return NULL;
}
IDispatch * GetJScript()
{
CComPtr<IHTMLDocument2> doc;
doc = GetIDocument2();
if(!doc)
return NULL;
IDispatch * dsScript = NULL;
HRESULT hr = doc->get_Script(&dsScript);
if(SUCCEEDED(hr) && dsScript)
return dsScript;
else
return NULL;
}
相关文档:
1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键
<table border oncontextmenu=return(false)> <td>no </table> 可用于Table
2. <body onselectstart="return false"> 取消选取、防止复制
3. onpaste="return false&quo ......
/*
用途:检查输入字符串是否只由英文字母和数字和下划线组成
输入:
s:字符串
返回:
如果通过验证返回true,否则返回false
*/
function isNumberOr_Letter( s ){//判断是否是数字或字母
var regu = "^[0-9a-zA-Z\_]+$";
var re = new RegExp(regu);
if (re.test(s)) {
return true;
}else{
return false;
} ......
在Base2中找到一个叫forEach的函数,是我见过的最好的实现。挖出来分析一下。它能对各种普通对象,字符串,数组以及类数组进行遍历。如果原游览器的对象已实现此函数,它则调用原对象的函数。
function forEach(object, block, context, fn) {
if (object == null) return;
if (!fn) {
if (typ ......
write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 Technorati 标签: JAVA,JAVA Applet,Applet Tag,Deploy Applet,从C++到JAVA 前言 曾经,我有一个梦想,那就是我的程序能让人不需要下载就能通过浏览器运行,可惜学习的C,C++等都不具备此能力,学习完Python后,发现其也仅仅是以服务器 ......