2013-10-24 100 views
0

这对你来说很简单。也许不适合我...表单提交 - Windows脚本主机

我只需要从脚本重新启动我的调制解调器。我试图按照我用来重启我的路由器的方式来做。这是模拟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执行它的正确方法是什么?

提前感谢您的时间。

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

如果有人知道任何其他方式,请让我知道。谢谢。

回答

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