У меня есть некоторый код, который отправляет ключи в Telnet для управления моим ИК-передатчиком. Сценарий прекрасно работает как автономный сценарий WSH, но как только я пытаюсь поместить его в Sub внутри HTA, происходит BERZERK. Вместо того, чтобы отправлять мои ключи первому экземпляру cmd, он открывает новый для каждого .sendkey!

Пожалуйста помоги!

Вот мой рабочий автономный скрипт:

    <job>
<script language="VBScript">
Option Explicit
On Error Resume Next
Dim WshShell
set WshShell=CreateObject("WScript.Shell")
WshShell.run "cmd.exe"
WScript.Sleep 500


WshShell.SendKeys "telnet 130.160.176.219 4998"

WshShell.SendKeys ("{Enter}")
WScript.Sleep 5000


WshShell.SendKeys "sendir,1:1,1,37764,1,1,340,168,21,22,21,22,21,22,21,22,21,22,21,22,21,22,21,22,21,64,21,64,21,64,21,64,21,64,21,64,21,64,21,64,21,22,21,64,21,22,21,64,21,22,21,22,21,22,21,22,21,64,21,22,21,64,21,22,21,64,21,64,21,64,21,64,21,4833"
WshShell.SendKeys ("{Enter}")
WScript.Sleep 500
WshShell.SendKeys "sendir,1:1,10,37764,1,1,340,168,21,22,21,22,21,22,21,22,21,22,21,22,21,22,21,22,21,64,21,64,21,64,21,64,21,64,21,64,21,64,21,64,21,64,21,64,21,22,21,22,21,22,21,22,21,64,21,22,21,22,21,22,21,64,21,64,21,64,21,64,21,22,21,64,21,4833"
WshShell.SendKeys ("{Enter}")
WScript.Sleep 500
WshShell.SendKeys "sendir,1:1,5,37764,1,1,340,168,21,22,21,22,21,22,21,22,21,22,21,22,21,22,21,22,21,64,21,64,21,64,21,64,21,64,21,64,21,64,21,64,21,64,21,22,21,64,21,22,21,22,21,22,21,22,21,22,21,22,21,64,21,22,21,64,21,64,21,64,21,64,21,64,21,4833"
WshShell.SendKeys ("{Enter}")
WScript.Sleep 500
WshShell.SendKeys "sendir,1:1,11,37764,1,1,340,168,21,22,21,22,21,22,21,22,21,22,21,22,21,22,21,22,21,64,21,64,21,64,21,64,21,64,21,64,21,64,21,64,21,22,21,64,21,64,21,64,21,64,21,22,21,64,21,22,21,64,21,22,21,22,21,22,21,22,21,64,21,22,21,64,21,4833"
WshShell.SendKeys ("{Enter}")
WScript.Sleep 500
WshShell.SendKeys "sendir,1:1,1,37764,1,1,340,168,21,22,21,22,21,22,21,22,21,22,21,22,21,22,21,22,21,64,21,64,21,64,21,64,21,64,21,64,21,64,21,64,21,22,21,64,21,22,21,64,21,22,21,22,21,22,21,22,21,64,21,22,21,64,21,22,21,64,21,64,21,64,21,64,21,4833"
WshShell.SendKeys ("{Enter}")
WScript.Sleep 1000
WshShell.SendKeys ("^{]}q{Enter}exit{Enter}")
WScript.Quit 
</script>
</job>

1 ответ1

0
WScript.Sleep 500

не будет работать в HTA. Это происходит из окна IE (у HTA есть)

setTimeout Method

--------------------------------------------------------------------------------

Evaluates an expression after a specified number of milliseconds has elapsed. 

Syntax

iTimerID = window.setTimeout(vCode, iMilliSeconds [, sLanguage])
Parameters

vCode Required. Variant that specifies the function pointer or string that indicates the code to be executed when the specified interval has elapsed. 
iMilliSeconds Required. Integer that specifies the number of milliseconds. 
sLanguage Optional. String that specifies one of the following values: JScript Language is JScript. 
VBScript Language is VBScript. 
JavaScript Language is JavaScript. 


Return Value

Integer. Returns an identifier that cancels the evaluation with the clearTimeout method. 

Remarks

Всегда используйте WshShell.AppActivate перед отправкой ключей, иначе вы не знаете, куда они идут.

Поскольку вы используете TELNET, а не CMD, нет смысла запускать cmd и запрашивать запуск telnet. Просто начните телнет прямой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .