javascript - 如何将 VBScript 字符串传递为我的 HTML 输入框中的默认值?

标签 javascript html css vbscript

我正在使用 HTML 和 VB 制作 HTA 向导。

这是我得到的一些 VB 代码。我需要获取 SN2 在此设置的值,并使其作为计算机名称在我的 html 代码中显示为默认文本。

我不确定如何调用 VB 代码以显示到向导的计算机名称文本框中。这可能吗?

VB代码

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colBIOS = objWMIService.ExecQuery _
    ("Select * from Win32_BIOS")
For each objBIOS in colBIOS
            MF=objBIOS.Manufacturer
            SN=objBIOS.SerialNumber
Next
intCharacters = 7
SN2 = RIGHT(SN, intCharacters)
            WScript.Echo SN2
            WScript.Echo MF

我尝试了上面的方法,但我也尝试了所有这些,并从中制作了一个 Sub,就像这样:

Sub SN2
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colBIOS = objWMIService.ExecQuery _
        ("Select * from Win32_BIOS")
    For each objBIOS in colBIOS
                MF=objBIOS.Manufacturer
                SN=objBIOS.SerialNumber
    Next
    intCharacters = 7
    SN2 = RIGHT(SN, intCharacters)
                ‘WScript.Echo SN2
                'WScript.Echo MF
End Sub

然后我尝试使用上述两种方法通过设置 value=SN2 在我的 HTML 代码中调用它。但很明显,这只会让 HTML 文本框每次都显示“SN2”:

<table cellpadding="0" border=0 style="position:relative; left:1%">
    <tr valign=bottom style="text-align:right">
        <td class="hideextra">
            <img src="comp.png"></img>
            <b>New Computer Details</b>
        </td>
</table><br>
<table cellpadding="0" border=0>
    <tr valign=middle style="text-align:left">
        <td>
            <b>Computer Name</b><br><br>        
        </td>
        <th style="text-align:left">
            <input type=text id="ComputerName" name=ComputerName value=SN2 /><br><br>
            </select>
        </th>
</table>

我试图研究一种方法来将值设置为在脚本的 VB 部分中设置的字符串,但没有想出任何办法。这可能吗?

请注意,此 HTA 用于 Windows PE,因此虽然我可以使用 VB 和一些 JS,但并不是所有的包都用于使用其他语言或更新版本(如 HTML5 等) ... *

更新!

通过将原始 VB 代码 [上面显示的第一个代码序列] 放在单独的 .vbs 文档中,代码可以完美运行并返回机器名称。我能够从 .hta 调用 .vbs,但我很好奇是什么让代码在 .vbs 文件中工作,而不是在 .hta 中工作。

因此机器名称出现在弹出窗口中,现在可以正常工作了。从这里开始,我想让机器名称出现在我的 .hta 中的 HTML 输入框中,就像我最初打算的那样,而不是像现在这样弹出。

最佳答案

您需要将代码连接到 DOM 事件。您需要将 SN2 更改为返回计算机名称的 Function(而不是 Sub),然后在 window.load 事件(或全部内联)

VBScript 没有内在或内在的事件概念(从技术上讲,Javascript 也没有),因此平台设计者决定使用“神奇”的命名约定来处理事件,这很笨重。它在名称中使用下划线将函数/子程序绑定(bind)到 DOM 对象事件,就像 VB6 将 Button1_Click 绑定(bind)到 Button1Click 事件一样>.

在 IE VBScript 中还有其他绑定(bind)事件处理程序的方法,但没有一种很漂亮。这记录在这里:https://msdn.microsoft.com/en-us/library/ms533023(v=vs.85).aspx

无论如何,你会想要这个:

<html>
<head>
    <script language="VBScript">
Option Explicit
Sub Window_onload
    Dim computerNameStr, wmiService, biosRows, biosRow, serialNumber
    computerNameStr = "."

    Set wmiService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & computerNameStr & "\root\cimv2")
    Set biosRows = objWMIService.ExecQuery("SELECT * FROM Win32_BIOS")
    For Each biosRow in biosRows

        serialNumber = biosRow.SerialNumber
        If Len( serialNumber ) > 0 Then
            window.computerName.value = serialNumber
            Exit For
        End If
    Next
End Sub
    </script>
</head>
<body>
    <input type="text" id="computerName" />
</body>
</html>

关于javascript - 如何将 VBScript 字符串传递为我的 HTML 输入框中的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28863121/

相关文章:

移动 safari (iOS) 中的 javascript 不会下载日历邀请

javascript - 我的下拉导航菜单不会停留在下方。无法点击子页面

jquery - 如何将 animate.css 与 animation.fill.mode 一起使用?

html - CSS 底部属性不适用于百分比(仅像素)

javascript - html 渲染后加载 javascript

javascript - 从平移点到中心缩放图像

javascript - 在 Javascript 中如何使鼠标悬停在链接上时可见?

CSS3渐变和背景图片结合

javascript - 如何在js中使用序列化的JSON对象

javascript - 如何在页面加载后弹出加载秒