这对你来说很容易。也许不适合我...
我只需要从脚本重启我的调制解调器。我尝试这样做的方式与我用来重启路由器的方式相同。这是使用以下脚本模拟HTTP标头并从Windows脚本宿主(wscript)执行它:
URL_Submit="http://192.168.100.1/goform/gscan";
ContentTypeSubmit="application/x-www-form-urlencoded";
ContentLengthSubmit="24";
POSTDATASubmit="SADownStartingFrequency=";
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
function send(URL_POST,CT,CL,CD)
{
WinHttpReq.open("POST", URL_POST, true);
WinHttpReq.SetRequestHeader("Content-Type", CT);
WinHttpReq.SetRequestHeader("Content-Length", CL);
WinHttpReq.send(CD);
};
function Submit()
{
send(URL_Submit,ContentTypeSubmit,ContentLengthSubmit,POSTDATASubmit)
};
Submit();
类似的脚本适用于我的路由器,但这个不适用于我的调制解调器。我实际用于重新启动调制解调器的常规方法是从其管理面板,提交以下表单:
<html>
...
<body>
...
<form action="http://192.168.100.1/goform/gscan" method="POST">
<input name="SADownStartingFrequency"> <input value="Click here to restart" type="submit">
</form>
...
</body>
</html>
注意:表格可以空白提交。填写信息并不是强制性的。
使用任何ECMAScript实现模拟此表单提交以便能够从Windows脚本宿主执行它的正确方法是什么?
提前感谢您的时间。
Denik。
我找到了一种方法,如下所示:
var doc = new ActiveXObject("htmlfile");
var form = doc.createElement("form");
var input = doc.createElement("input");
form.name = "gscan";
form.method = "POST";
form.action = "http://192.168.100.1/goform/gscan";
input.type = "text";
input.name = "SADownStartingFrequency";
doc.appendChild(form);
form.appendChild(input);
form.submit();
但我仍然遇到的问题是,每次提交表单时,都会打开一个Internet Explorer窗口,正如我在我的问题中所说,我需要在没有打开窗口的情况下在Windows脚本宿主上运行该脚本。我想在后台运行它。
如果有人知道其他任何方式,请告诉我。感谢。
答案 0 :(得分:0)
这是我发现的一种方式。它适用于我:
'modem_reboot.vbs
'For Cisco DPC2203 Modem rebooting
dim Browser
set Browser = WScript.CreateObject("InternetExplorer.Application")
Browser.Visible = false
Browser.Navigate "about:blank"
Browser.Document.Body.InnerHTML = _
"<form name=""reboot"" action=""http://192.168.100.1/goform/gscan"" method=""POST"">" + _
"<input name=""SADownStartingFrequency""> <input value=""Click here to restart"" type=""submit"">" + _
"</form>"
Browser.Document.reboot.Submit()
WScript.Sleep 5000
Browser.Quit