【问题标题】:Form Submission - Windows Script Host表单提交 - Windows 脚本宿主
【发布时间】:2013-10-24 12:25:55
【问题描述】:

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

我只需要从脚本重新启动我的调制解调器。我正在尝试以与重新启动路由器相同的方式进行操作。这是使用以下脚本模拟 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 上运行脚本,而无需打开窗口。我想在后台运行它。

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

【问题讨论】:

    标签: javascript jscript wsh


    【解决方案1】:

    这是我发现的一种方法。它对我很有效:

    '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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多