1

我有一个带有一些参数(姓名、电子邮件等)的 VBScript,我创建了一个 HTML 表单。

当用户键入数据时,我想执行 VBScript 并将表单数据作为参数传递。

问题是如何从 HTML 表单运行 VBScript(没有服务器,因此客户端执行 HTML 并在他们的机器上运行 VBscript)。

VBScript 是一个外部文件。让我们称之为 myScript.vbs

4

3 回答 3

1

我不知道 HTML 表单在没有与服务器的 HTTP 连接的情况下“提交”数据的任何方式。以下是一些可能解决您的问题的选项:

  1. VBScript 与Classic ASP基本相同。您当然可以在 Windows 7 上托管IIS,并将您的 Web 浏览器指向“localhost”。
  2. 您可以修改表单以包含ActiveX 控件或其他非浏览器安全的可执行文件,这可能会触发您的 VBScript 任务的执行。
  3. 您可以编写一个嵌入 Internet Explorer并在用户单击提交时触发您的任务的独立程序。

希望这可以帮助!

于 2012-08-01T14:49:53.107 回答
1

巧合的是,我昨天刚刚发布了一个如何在 Ruby 中执行此操作的问题,并提供了一个 vbscript 脚本作为示例,所以在这里你有它。但事实上最好反过来,你最好从你的脚本启动浏览器。

Set web = CreateObject("InternetExplorer.Application") 
If web Is Nothing Then 
  msgbox("Error while loading Internet Explorer") 
  Wscript.Quit 
Else 
  with web 
    .Width = 300 
    .Height = 175 
    .Offline = True 
    .AddressBar = False 
    .MenuBar = False 
    .StatusBar = False 
    .Silent = True 
    .ToolBar = False 
    .Navigate "about:blank" 
    .Visible = True 
  end with 
End If 

'Wait for the browser to navigate to nowhere 
Do While web.Busy 
  Wscript.Sleep 100 
Loop 

'Wait for a good reference to the browser document 
Set doc = Nothing 
Do Until Not doc Is Nothing 
  Wscript.Sleep 100 
  Set doc = web.Document 
Loop 

'Write the HTML form 
doc.Write "Give me a name<br><form><input type=text name=name ><input type=button name=submit id=submit value='OK' onclick='javascript:submit.value=""Done""'></form>" 
Set oDoc = web.Document 
Do Until oDoc.Forms(0).elements("submit").Value <> "OK" 
  Wscript.Sleep 100 
  If web Is Nothing or Err.Number <> 0 Then 
    msgbox "Window closed" 
    Wscript.Quit 
  End If 
Loop 
name = oDoc.Forms(0).elements("name").value 
oDoc.close 
set oDoc = nothing 
web.quit 
set web = nothing 
Wscript.echo "Hello " & name 
于 2012-08-01T14:53:10.837 回答
0

这是我的 HTML 代码

<form id="myform">
<input type="radio" name="formradio" id="yes" />
<input type="radio" name="formradio" id="no" />
<select name="formemail" size="1">
<option value="someone@example.com" selected="selected">someone@example.com</option>
</select>
<button type="submit" id="sendReport">Send Status Report</button>

这是我在 HTML 页面中的 VBscript 代码

<script language="VBScript" type="text/vbscript">
<![CDATA[
    Sub sendReport_onclick()
        'Logic to process the form goes in here.
        MsgBox myform.formradio.value
        MsgBox myform.formemail.value            
        'Run: wscript "{path}externalVBScript.vbs" "{path}"
        WSHShell.Run "wscript """ & Path & "externalVBScript.vbs"" """ & Path & """"
        window.status = "Script has been run via WScript"
    End Sub
]]>
</script>
于 2012-08-01T15:49:12.140 回答