Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Button 如何从动态生成的按钮执行代码_Button_User Interface_Hta_Printers - Fatal编程技术网

Button 如何从动态生成的按钮执行代码

Button 如何从动态生成的按钮执行代码,button,user-interface,hta,printers,Button,User Interface,Hta,Printers,我尝试制作一个gui(hta),它可以安装在客户机上,从打印机服务器安装一台或多台打印机 问题是,当我创建“install”按钮时,函数是在表单加载时执行的,而不是单击按钮 我不明白为什么。你能帮我吗 <HTML> <HEAD> <TITLE>printer installation</TITLE> <HTA:APPLICATION ID = 'AppBase'> <script languag

我尝试制作一个gui(hta),它可以安装在客户机上,从打印机服务器安装一台或多台打印机

问题是,当我创建“install”按钮时,函数是在表单加载时执行的,而不是单击按钮

我不明白为什么。你能帮我吗

<HTML>
<HEAD> 
    <TITLE>printer installation</TITLE>
    <HTA:APPLICATION ID = 'AppBase'>

        <script language="VBScript">



    Dim WshNetwork, objPrinter, intDrive, intNetLetter
    strComputer = "change_printer_server_name_or_ip" 

    strHTML =  "<TABLE BORDER='0'>"

    Set WshNetwork = CreateObject("WScript.Network") 
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
    Set colInstalledPrinters = objWMIService.ExecQuery("Select * from Win32_Printer") 
    For Each objPrinter in colInstalledPrinters 

        strHTML = strHTML & "<TR><TD><input type='button' value='install printer' name='" & objPrinter.Name & "' onclick='" & installprinter(printname, printserver) &"'>" & objPrinter.Name & "</input></TD><TD>" & objPrinter.Location  & "</TD><TD>" & objPrinter.portname & "</TD></TR>"

    next
    strHTML = strHTML & "</TABLE>"

    DataArea.InnerHTML = strHTML

    function installprinter(printname, printserver)
        Set WshNetwork = CreateObject ("WScript.Network")
        on error resume next
        PrinterPath = "\\" & printserver & "\" & printname
        WshNetwork.RemovePrinterConnection PrinterPath, true, true
        WshNetwork.AddwindowsPrinterConnection (PrinterPath)
        msgBox "L'imprimante a été installée avec succès"
    end function


    </script>
</HEAD>
<BODY>

     <span id="DataArea"></span>



</BODY>

打印机安装
Dim WshNetwork、objPrinter、intDrive、intNetLetter
strComputer=“更改\u打印机\u服务器\u名称\u或\u ip”
strHTML=“”
设置WshNetwork=CreateObject(“WScript.Network”)
设置objWMIService=GetObject(“winmgmts:{impersonationLevel=impersonate}!\\”&strComputer&“\root\cimv2”)
Set COINSTALLEDPRINTERS=objWMIService.ExecQuery(“从Win32_打印机中选择*)
对于ColInstalledPrinter中的每个objPrinter
strHTML=strHTML&&objPrinter.Name&&objPrinter.Location&&objPrinter.portname&&
下一个
strHTML=strHTML&“
DataArea.InnerHTML=strHTML
函数installprinter(printname,printserver)
设置WshNetwork=CreateObject(“WScript.Network”)
出错时继续下一步
PrinterPath=“\\”&printserver&“\”&printname
WshNetwork.RemovePrinterConnection打印路径,true,true
WshNetwork.AddwindowsPrinterConnection(PrinterPath)
msgBox“安装avec Success的许可证”
端函数

页面的加载顺序很重要

当您尝试分配DataArea时,DOM尚未初始化,因此DataArea不存在。下面是一个简单的示例,说明如何在DOM就绪时调用代码:

<html>
<head> 
    <title>printer installation</title>
    <HTA:APPLICATION ID = 'AppBase'>
    <script language="VBScript">
    strHTML =  "<TABLE BORDER='0'>"
    strHTML = strHTML & "<tr><td>Testing</td></tr>"
    strHTML = strHTML & "</TABLE>"

    Function OnLoad()
        DataArea.InnerHTML = strHTML
    End Function
    </script>
</head>
<body onload="OnLoad">
     <span id="DataArea"></span>
</body>
</html>

在生成HTML时,实际上正在调用installprinter例程。相反,您需要在单击按钮时将HTML格式化为有效调用。您希望最终的HTML如下所示:

<TR><TD><input type='button' value='install printer' name='PrinterName'
    onclick='installprinter "PrinterName", "PCName"'>PrinterName</input></TD>
    <TD>PrinterLoc</TD>
    <TD>PortName</TD></TR>
PrinterName
PrinterLoc
串口名称
请注意,由于您正在调用sub,因此排除了括号。看起来很奇怪,但VBScript就是这样工作的。因此,生成表行的代码应该如下所示:

strHTML = strHTML & "<TR><TD><input type='button' value='install printer' name='" & _
    objPrinter.Name & "' onclick='installprinter """ & objPrinter.Name & """, """ & _
    strComputer & """'>" & objPrinter.Name & "</input></TD><TD>" & _
    objPrinter.Location  & "</TD><TD>" & objPrinter.portname & "</TD></TR>"
strHTML=strHTML&&objPrinter.Name&&_
objPrinter.Location&&&objPrinter.portname&“

我仍然有同样的问题,但我使用了您给我的结构。尝试隔离问题;如果您使strHTML=“Hello”起作用吗?继续添加代码,直到代码中断,然后从那里进行诊断。
strHTML = strHTML & "<TR><TD><input type='button' value='install printer' name='" & _
    objPrinter.Name & "' onclick='installprinter """ & objPrinter.Name & """, """ & _
    strComputer & """'>" & objPrinter.Name & "</input></TD><TD>" & _
    objPrinter.Location  & "</TD><TD>" & objPrinter.portname & "</TD></TR>"