0

这对你来说很容易。也许不适合我...

我只需要从脚本重新启动调制解调器。我正在尝试以与重新启动路由器相同的方式进行操作。这是使用以下脚本模拟 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 Script Host 执行它的正确方法是什么?

在此先感谢您的时间。

丹尼克。

编辑:

我找到了一种方法,如下所示:

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 Script Host 上运行脚本,而不需要打开窗口。我想在后台运行它。

如果有人知道其他方法,请告诉我。谢谢。

4

1 回答 1

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
于 2014-02-12T14:34:49.397 回答