Button 如何从动态生成的按钮执行代码
我尝试制作一个gui(hta),它可以安装在客户机上,从打印机服务器安装一台或多台打印机 问题是,当我创建“install”按钮时,函数是在表单加载时执行的,而不是单击按钮 我不明白为什么。你能帮我吗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
<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>"