webbrowser 执行网页中的JS
网页是jsp的,其中一个图片按钮对应的是JS代码:<tdclass="labelrow1"><imgsrc="images/gm_button_2.jpg"style="...
网页是jsp的,其中一个图片按钮对应的是JS代码:
<td class="labelrow1"><img src="images/gm_button_2.jpg" style="cursor:hand;" border="0" onclick="ajaxReset();" width="90" height="25"></td>
function ajaxReset()
{
var xmlhttp;
try
{
xmlhttp=new XMLHttpRequest();
} catch (e)
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (4==xmlhttp.readyState) {
if (200==xmlhttp.status){
var text=xmlhttp.responseText;
var ddarr=new Array();
ddarr=text.split("|");
var message=ddarr[0];
var dan=ddarr[1];
var shuang=ddarr[2];
var da=ddarr[3];
var xiao=ddarr[4];
var lon=ddarr[5];
var he=ddarr[6];
var hu=ddarr[7];
var fen=ddarr[8];
var status=ddarr[9];
var score=ddarr[10];
if (text.indexOf("游戏连接成功")>=0)
{
document.getElementById("message").value=message;
document.getElementById("scores").value=score;
setcoin('Layer1','h1',dan);
setcoin('Layer2','h2',da);
setcoin('Layer3','h3',lon);
setcoin('Layer4','h4',he);
setcoin('Layer5','h5',hu);
setcoin('Layer6','h6',xiao);
setcoin('Layer7','h7',shuang);
setcoin1('Layer8','h8',fen);
setstatus(status);
}
else
{
document.getElementById("message").value=text;
}
}
else
{
document.getElementById("message").value="与服务器通讯中断!"
}
}
}
xmlhttp.open("post","coinreset.jsp",true);
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttp.send("");
}
我先用VB6.0的webbrowser打开这个网页,要VB自动点击这个图片按钮,要怎么做,本人刚学VB不久,还是个菜鸟,最好能给段代码,能附带说明更好。 展开
<td class="labelrow1"><img src="images/gm_button_2.jpg" style="cursor:hand;" border="0" onclick="ajaxReset();" width="90" height="25"></td>
function ajaxReset()
{
var xmlhttp;
try
{
xmlhttp=new XMLHttpRequest();
} catch (e)
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (4==xmlhttp.readyState) {
if (200==xmlhttp.status){
var text=xmlhttp.responseText;
var ddarr=new Array();
ddarr=text.split("|");
var message=ddarr[0];
var dan=ddarr[1];
var shuang=ddarr[2];
var da=ddarr[3];
var xiao=ddarr[4];
var lon=ddarr[5];
var he=ddarr[6];
var hu=ddarr[7];
var fen=ddarr[8];
var status=ddarr[9];
var score=ddarr[10];
if (text.indexOf("游戏连接成功")>=0)
{
document.getElementById("message").value=message;
document.getElementById("scores").value=score;
setcoin('Layer1','h1',dan);
setcoin('Layer2','h2',da);
setcoin('Layer3','h3',lon);
setcoin('Layer4','h4',he);
setcoin('Layer5','h5',hu);
setcoin('Layer6','h6',xiao);
setcoin('Layer7','h7',shuang);
setcoin1('Layer8','h8',fen);
setstatus(status);
}
else
{
document.getElementById("message").value=text;
}
}
else
{
document.getElementById("message").value="与服务器通讯中断!"
}
}
}
xmlhttp.open("post","coinreset.jsp",true);
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlhttp.send("");
}
我先用VB6.0的webbrowser打开这个网页,要VB自动点击这个图片按钮,要怎么做,本人刚学VB不久,还是个菜鸟,最好能给段代码,能附带说明更好。 展开
2个回答
展开全部
在界面上拖入QAxWidget并指定控件为{8856F961-340A-11D0-A96B-00C04FD705A2},这个值可以通过OleView.exe查到然后通过IHTMLWindow2接口的execScript方法执行Java
在界面上拖入QAxWidget,注意这里不建议直接在UI设计界面指定控件,否则可能引起QtCreator崩溃
建议在代码中动态设置,如:
ui->axWidget->setControl("Shell.Explorer"); ui->axWidget->dynamicCall("Navigate(QString)", "C:/1.html");当然,上面的"C:/1.html"是我测试的页面
这里的办法是通过IHTMLWindow2接口的execScript方法执行JavaScript函数。可惜的是这个方法不支持函数返回值
#include <MsHTML.h> { QAxObject *document = ui->axWidget->querySubObject("Document"); IHTMLDocument2 *doc2; document->queryInterface(QUuid(IID_IHTMLDocument2), (void**)&doc2); if (doc2) { IHTMLWindow2 *win2 = nullptr; if (doc2->get_parentWindow(&win2) == S_OK) { BSTR s1 = SysAllocString(L"Test()"); BSTR s2 = SysAllocString(L"JavaScript"); VARIANT ret; win2->execScript(s1, s2, &ret); SysFreeString(s2); SysFreeString(s1); } } }
JavaScript函数如下
<script language="javascript" type="text/javascript"> function Test() { alert("你调用了全局函数Test"); } </script>
在界面上拖入QAxWidget,注意这里不建议直接在UI设计界面指定控件,否则可能引起QtCreator崩溃
建议在代码中动态设置,如:
ui->axWidget->setControl("Shell.Explorer"); ui->axWidget->dynamicCall("Navigate(QString)", "C:/1.html");当然,上面的"C:/1.html"是我测试的页面
这里的办法是通过IHTMLWindow2接口的execScript方法执行JavaScript函数。可惜的是这个方法不支持函数返回值
#include <MsHTML.h> { QAxObject *document = ui->axWidget->querySubObject("Document"); IHTMLDocument2 *doc2; document->queryInterface(QUuid(IID_IHTMLDocument2), (void**)&doc2); if (doc2) { IHTMLWindow2 *win2 = nullptr; if (doc2->get_parentWindow(&win2) == S_OK) { BSTR s1 = SysAllocString(L"Test()"); BSTR s2 = SysAllocString(L"JavaScript"); VARIANT ret; win2->execScript(s1, s2, &ret); SysFreeString(s2); SysFreeString(s1); } } }
JavaScript函数如下
<script language="javascript" type="text/javascript"> function Test() { alert("你调用了全局函数Test"); } </script>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询