Skript funktioniert einwandfrei als .wsh, geht in HTA berzerk

0

Ich habe einen Code, der Schlüssel an Telnet sendet, um einen IR-Sender von mir zu manipulieren. Das Skript funktioniert gut als eigenständiges WSH-Skript, aber sobald ich versuche, es in ein Sub innerhalb eines HTA zu setzen, geht es an BERZERK. Anstatt meine Schlüssel an die erste Instanz von cmd zu senden, wird für jeden .sendkey ein neuer geöffnet!

Bitte helfen Sie!

Hier ist mein Standalone-Skript:

    <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>
jake
quelle
Entschuldigung, ich versuche den Code zu posten, bin aber mit den Schaltflächen in diesem Forum nicht vertraut.
Jake
1
Was passiert, wenn Sie execanstelle von verwenden run? Haben Sie die AppActivateMethode vor dem Senden von Schlüsseln ausprobiert ? ( technet.microsoft.com/en-us/library/ee156605.aspx ) Beachten Sie, dass Sie mit AFAIK, exec auf Telnet-Antworten und -Aufforderungen antworten können
Yorik,

Antworten:

0
WScript.Sleep 500

funktioniert nicht in einer HTA. Es gibt dies aus einem IE-Fenster (HTA hat eine)

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

Verwenden WshShell.AppActivateSie immer, bevor Sie Schlüssel senden, da Sie sonst nicht wissen, wohin sie gehen.

Da Sie TELNET nicht CMD verwenden, ist es sinnlos, cmd zu starten und es aufzufordern, Telnet zu starten. Starte einfach direkt telnet.

auslösen
quelle