Javascript один вариант выбора нескольких значений в HTA - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть работающий HTA для пробуждения / перезагрузки / выключения нескольких компьютеров с помощью VBScript. Один выпадающий список с 3 кнопками для выполнения 3 различных функций.

main hta:

        <select name="Control_PC">
            <option value="0" selected>Select Computer</option>     
            <option value="1">PC1</option>
            <option value="2">PC2</option>
            <option value="3">PC3</option>

            <input type="button"    value="WAKE UP"         onClick="executewake">
            <input type="button"    value="RESTART"         onClick="executereboot">
            <input type="button"    value="SHUTDOWN"        onClick="executeshutdown">  
        </select>          

с VBScript:

	' SELECTION REBOOT PCs
	Sub executereboot
		if Control_PC.value = 1 then 
			Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -r -t 01 -m \\PC1"
			Shell.Run command, 1, false
		Elseif Control_PC.value = 2 then 
			Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -r -t 01 -m \\PC2"
			Shell.Run command, 1, false
		Elseif Control_PC.value = 3 then 
			Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -r -t 01 -m \\PC3"
			Shell.Run command, 1, false
		end if	
	End Sub		
	
	
	' SELECTION SHUTDOWN PCs
	Sub executeshutdown
		if Control_PC.value = 1 then 
			Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -s -t 01 -m \\PC1"
			Shell.Run command, 1, false
		Elseif Control_PC.value = 2 then 
			Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -s -t 01 -m \\PC2"
			Shell.Run command, 1, false
		Elseif Control_PC.value = 3 then 
			Set Shell = CreateObject("Wscript.Shell") : command = "shutdown -s -t 01 -m \\PC3"
			Shell.Run command, 1, false
		end if	
	End Sub			
	
	
	' SELECTION WAKE PCs
	Sub executewake
		if Control_PC.value = 1 then 
			Set Shell = CreateObject("Wscript.Shell") : command = "tools\wol.exe 10604B7609CE"
			Shell.Run command, 1, false
		Elseif Control_PC.value = 2 then 
			Set Shell = CreateObject("Wscript.Shell") : command = "tools\wol.exe 10604B7609F2"
			Shell.Run command, 1, false
		Elseif Control_PC.value = 3 then 
			Set Shell = CreateObject("Wscript.Shell") : command = "tools\wol.exe 10604B7E829B"
			Shell.Run command, 1, false
		end if	
	End Sub	

Теперь я знаю, как создать опцию выбора с помощью одной кнопки в JavaScript, используя одно значение:

   
		<select id="Control_PC">
				<option value="" selected>Select Computer</option>
				<option value="shutdown -r -t 01 -m \\PC1">PC1</option>
				<option value="shutdown -r -t 01 -m \\PC2">PC2</option>
				<option value="shutdown -r -t 01 -m \\PC3">PC3</option>
				<input 	type="button" value="Reboot" 	onClick="runSelection(document.getElementById('Control_PC').value)">
		</select>

Но как создать три кнопки с javascript, которые будут вести себя так же, как версия vbscript, с элегантным решением, которое будет использовать все команды wake / reboot / shutdown в качестве различных значений в одной функции, что-то вроде:

Выбрать компьютер PC1 PC2 PC3

Любая помощь будет принята с благодарностью:)

Спасибо David

1 Ответ

0 голосов
/ 26 апреля 2018

Похоже, что вы можете делать то, что хотите, отправляя переменные в вызываемые вами функции.

Например, вы можете установить MAC-адрес в качестве значения поля выбора следующим образом:

    <select name="Control_PC">
        <option value="" selected>Select Computer</option>      
        <option value="10604B7609CE">PC1</option>
        <option value="10604B7609F2">PC2</option>
        <option value="10604B7E829B">PC3</option>
    </select>

Затем вы можете настроить каждую кнопку на вызов одной и той же функции с параметром для того, какое действие вы хотите выполнить, например:

    <input type="button"    value="WAKE UP"         onClick="RunSelection('wake')">
    <input type="button"    value="RESTART"         onClick="RunSelection('restart')">
    <input type="button"    value="SHUTDOWN"        onClick="RunSelection('shutdown')"> 

Затем вы можете настроить эту функцию vbscript для выполнения определенных действий на основе значения этого параметра и значения поля выбора. Как это:

Sub RunSelection(strAction)
    If Control_PC.selectedIndex = 0 Then MsgBox "Select a computer.",vbExclamation : Exit Sub 
    pcName = Control_PC.Options(Control_PC.selectedIndex).innerText
    macAddress = Control_PC.value

    Select Case strAction
        Case "wake"
            strCommand = "tools\wol.exe " & macAddress
        Case "restart"
            strCommand = "shutdown -r -t 01 -m \\" & pcName
        Case "shutdown"
            strCommand = "shutdown -s -t 01 -m \\" & pcName
    End Select 
    MsgBox "Running command: " & strCommand
End Sub 

Есть много способов сделать то, что вы пытаетесь сделать, но это должно помочь вам начать работу.

Изменить на комментарий ОП:

Я думаю, что вы хотите сделать что-то вроде этого.

<select name="Control_PC">
    <option value="" selected>Select Computer</option>      
    <option restart="shutdown -r -t 01 -m \\PC1"  shutdown="shutdown -s -t 01 -m \\PC1" >PC1</option>
    <option restart="shutdown -r -t 01 -m \\PC2"  shutdown="shutdown -s -t 01 -m \\PC2" >PC2</option>
    <option restart="shutdown -r -t 01 -m \\PC3"  shutdown="shutdown -s -t 01 -m \\PC3" >PC3</option>

</select>
<input  type="button" value="Restart"    onClick="RunSelection(Control_PC.Options(Control_PC.selectedIndex).getAttribute('restart'))">
<input  type="button" value="Shutdown"    onClick="RunSelection(Control_PC.Options(Control_PC.selectedIndex).getAttribute('shutdown'))">

По сути, вы создаете пользовательский атрибут и присваиваете ему значение.

Control_PC.Options(Control_PC.selectedIndex) получит выбранную опцию, а getAttribute получит значение указанного вами атрибута.

...