Druckversion des Themas

Hier klicken um das Topic im Orginalformat anzusehen

HTML-Editor phase 5 Support _ Talktime _ VBS in HTA

Geschrieben von: Conny 10.08.2007 - 21:20

Moin Gemeinde,

Ich kämpfe bereits eine Weile mit einem Problem, dessen Lösung vllt. ganz einfach ist, von mir (mangels Grundkenntnis) aber nicht erkannt wird.

Dieses Script (ich nenne es Write_Line.vbs) funktioniert:

CODE
Option Explicit

' Variablen deklarieren
Dim WSHShell
Dim Sleep

' Programm ablauf, Zuweisen der Variablen
set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "C:\WINDOWS\system32\notepad.exe"
WScript.Sleep 3000

'Fahrgestelnummer eingeben und mit Enter bestätigen
WshShell.Sendkeys "1"
WshShell.Sendkeys "2"
WshShell.Sendkeys "6"
WshShell.Sendkeys "0"
WshShell.Sendkeys "3"
WshShell.Sendkeys "8"
WshShell.Sendkeys "1"
WshShell.Sendkeys "A"
WshShell.Sendkeys "5"
WshShell.Sendkeys "8"
WshShell.Sendkeys "5"
WshShell.Sendkeys "1"
WshShell.Sendkeys "5"
WshShell.Sendkeys "3"

WshShell.Sendkeys "~"


In mehrfache (Auswahl) Ausführung, eingebettet in ein HTA Dokument, bekomme ich ein Fehlerhinweis: Object erforderlich: WScript.
Warum bloß?
CODE
<HTML>
<HEAD>
<TITLE>W126 Fahrgestellnummern</TITLE>
<HTA:APPLICATION ID="hta3" ICON="Stern.ico" APPLICATIONNAME="W126 Fahrgestellnummern" BORDER="thin" BORDERSTYLE="normal" CAPTION="yes" SHOWINTASKBAR="yes" SYSMENU="no" INNERBORDER="yes" WINDOWSTATE="normal" SINGLEINSTANCE="yes" CONTEXTMENU="no" SCROLL="no">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/vbscript">
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">
<STYLE TYPE="text/css">
BODY {
margin-left: 20px;
font: normal bold 12px Verdana;
background-color: Buttonface;
}
P {
font: normal 12px Verdana;
}
H1 {
font: normal bold 16px Verdana;
}
table {
font-size: 12px;
border: none;
}
</STYLE>

&lt;script LANGUAGE="vbScript">
Option Explicit

' Variablen deklarieren '
Dim WSHShell
Dim Sleep
Dim WScript

' Bestimmung der Fenstergröße '
Sub SubInitFenster
window.resizeTo 390, 500
End Sub

' Fahrgestellanweisungen '
Function Fgst300
set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "D:\BHROOT\BIN\WINMBWW.EXE DBCP"
WScript.Sleep 3000 'Nach aufruf EPC 3 Sek. warten'
'Fahrgestelnummer eingeben und mit Enter bestätigen'
WshShell.Sendkeys "1"
WshShell.Sendkeys "2"
WshShell.Sendkeys "6"
WshShell.Sendkeys "0"
WshShell.Sendkeys "2"
WshShell.Sendkeys "4"

WshShell.Sendkeys "~"

End Function

Function Fgst500
set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "D:\BHROOT\BIN\WINMBWW.EXE DBCP"
WScript.Sleep 3000 'Nach aufruf EPC 3 Sek. warten'
'Fahrgestelnummer eingeben und mit Enter bestätigen'
' 500SE 126 036 1A 291 679 '
WshShell.Sendkeys "1"
WshShell.Sendkeys "2"
WshShell.Sendkeys "6"
WshShell.Sendkeys "0"
WshShell.Sendkeys "3"
WshShell.Sendkeys "6"
WshShell.Sendkeys "1"
WshShell.Sendkeys "A"
WshShell.Sendkeys "2"
WshShell.Sendkeys "9"
WshShell.Sendkeys "1"
WshShell.Sendkeys "6"
WshShell.Sendkeys "7"
WshShell.Sendkeys "9"
WshShell.Sendkeys "~"

End Function

Function Fgst560
set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "D:\BHROOT\BIN\WINMBWW.EXE DBCP"
WScript.Sleep 3000 'Nach aufruf EPC 3 Sek. warten'
'Fahrgestelnummer eingeben und mit Enter bestätigen '
WshShell.Sendkeys "1"
WshShell.Sendkeys "2"
WshShell.Sendkeys "6"
WshShell.Sendkeys "0"
WshShell.Sendkeys "3"
WshShell.Sendkeys "8"
WshShell.Sendkeys "1"
WshShell.Sendkeys "A"
WshShell.Sendkeys "5"
WshShell.Sendkeys "8"
WshShell.Sendkeys "5"
WshShell.Sendkeys "1"
WshShell.Sendkeys "5"
WshShell.Sendkeys "3"
WshShell.Sendkeys "~"

' Fgst.Nr. vom grünen 560er: 126 038 1A 58 51 53 '
' Fgst.Nr. vom grauen 560er: 126 038 1A 47 48 65 '
End Function

Function Fgst560ECE
set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "D:\BHROOT\BIN\WINMBWW.EXE DBCP"
WScript.Sleep 3000 'Nach aufruf EPC 3 Sek. warten'
'Fahrgestelnummer eingeben und mit Enter bestätigen '
WshShell.Sendkeys "1"
WshShell.Sendkeys "2"
WshShell.Sendkeys "6"
WshShell.Sendkeys "0"
WshShell.Sendkeys "3"
WshShell.Sendkeys "8"
WshShell.Sendkeys "1"
WshShell.Sendkeys "A"
WshShell.Sendkeys "4"
WshShell.Sendkeys "7"
WshShell.Sendkeys "4"
WshShell.Sendkeys "8"
WshShell.Sendkeys "6"
WshShell.Sendkeys "5"
WshShell.Sendkeys "~"
End Function

' Fenster schließen'
Sub SubQuit
Set WSHShell = Nothing
Window.Close
End Sub
</SCRIPT>
</HEAD>

<BODY ONLOAD="SubInitFenster">
<H3>W126<BR>Fahrgestellnummereingabe<BR>für die EPC</H3>

<HR><BR><BR>

<P>Schnelle Fahrgestellnummereingabe an der EPC<BR>
hinter dem entsprechenden Fahrzeugtyp<BR>
den 'Start' Button anklicken.</P>
<TABLE BORDER="0" WIDTH="320">
<TR><TD ALIGN="center">
<FORM>
<TABLE BORDER="0" CELLPADDING="5">
<TR>
<TD>1.</TD>
<TD>300SE Kurzdaten R6</TD>
<TD><INPUT TYPE="button" VALUE="Start" NAME="button1" ONCLICK="Fgst300"></TD>
</TR>

<TR>
<TD>2.</TD>
<TD>500SE Bj.'85 mit 248 PS</TD>
<TD><INPUT TYPE="button" VALUE="Start" NAME="button2" ONCLICK="Fgst500"></TD>
</TR>

<TR>
<TD>3.</TD>
<TD>560SE Bj.'90 mit 279 PS</TD>
<TD><INPUT TYPE="button" VALUE="Start" NAME="button3" ONCLICK="Fgst560"></TD>
</TR>

<TR>
<TD>4.</TD>
<TD>560SE Bj.'89 mit 300 PS</TD>
<TD><INPUT TYPE="button" VALUE="Start" NAME="button4" ONCLICK="Fgst560ECE"></TD>
</TR>
</TABLE>
<HR><BR><BR>
<INPUT TYPE="Button" NAME="button6" VALUE="Close" ONCLICK="SubQuit" TITLE="Das Fenster wird geschlossen!">
</FORM>
</TD></TR>
</TABLE>

</BODY>
</HTML>


Wer von Euch erbarmt sich meiner und sagt was ich ändern muss, bzw, wie ich es besser machen kann?
Danke.
cu
Conny

Geschrieben von: helpy 10.08.2007 - 22:59

Hi Conny, weil ich grade mal vorbei schaue und mich an alte Zeiten erinnere wink.gif

Probiers damit:

CODE
<HTML>
<HEAD>
<TITLE>W126 Fahrgestellnummern</TITLE>
<HTA:APPLICATION ID="hta3" ICON="Stern.ico" APPLICATIONNAME="W126 Fahrgestellnummern" BORDER="thin" BORDERSTYLE="normal" CAPTION="yes" SHOWINTASKBAR="yes" SYSMENU="no" INNERBORDER="yes" WINDOWSTATE="normal" SINGLEINSTANCE="yes" CONTEXTMENU="no" SCROLL="no">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/vbscript">
<STYLE TYPE="text/css">
BODY {
margin-left: 20px;
font: normal bold 12px Verdana;
background-color: Buttonface;
}
P {
font: normal 12px Verdana;
}
H1 {
font: normal bold 16px Verdana;
}
table {
font-size: 12px;
border: none;
}
</STYLE>

&lt;script LANGUAGE="vbScript">
Option Explicit

' Variablen deklarieren '
Dim WSHShell
Dim Sleep
Dim WScript

' Bestimmung der Fenstergröße '
Sub SubInitFenster
window.resizeTo 390, 500
End Sub

' Fahrgestellanweisungen '
Function Fgst300
set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "D:\BHROOT\BIN\WINMBWW.EXE DBCP"
WScript.Sleep 3000 'Nach aufruf EPC 3 Sek. warten'
'Fahrgestelnummer eingeben und mit Enter bestätigen'
WshShell.Sendkeys "1"
WshShell.Sendkeys "2"
WshShell.Sendkeys "6"
WshShell.Sendkeys "0"
WshShell.Sendkeys "2"
WshShell.Sendkeys "4"

WshShell.Sendkeys "~"

End Function

Function Fgst500
set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "D:\BHROOT\BIN\WINMBWW.EXE DBCP"
WScript.Sleep 3000 'Nach aufruf EPC 3 Sek. warten'
'Fahrgestelnummer eingeben und mit Enter bestätigen'
' 500SE 126 036 1A 291 679 '
WshShell.Sendkeys "1"
WshShell.Sendkeys "2"
WshShell.Sendkeys "6"
WshShell.Sendkeys "0"
WshShell.Sendkeys "3"
WshShell.Sendkeys "6"
WshShell.Sendkeys "1"
WshShell.Sendkeys "A"
WshShell.Sendkeys "2"
WshShell.Sendkeys "9"
WshShell.Sendkeys "1"
WshShell.Sendkeys "6"
WshShell.Sendkeys "7"
WshShell.Sendkeys "9"
WshShell.Sendkeys "~"

End Function

Function Fgst560
set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "D:\BHROOT\BIN\WINMBWW.EXE DBCP"
WScript.Sleep 3000 'Nach aufruf EPC 3 Sek. warten'
'Fahrgestelnummer eingeben und mit Enter bestätigen '
WshShell.Sendkeys "1"
WshShell.Sendkeys "2"
WshShell.Sendkeys "6"
WshShell.Sendkeys "0"
WshShell.Sendkeys "3"
WshShell.Sendkeys "8"
WshShell.Sendkeys "1"
WshShell.Sendkeys "A"
WshShell.Sendkeys "5"
WshShell.Sendkeys "8"
WshShell.Sendkeys "5"
WshShell.Sendkeys "1"
WshShell.Sendkeys "5"
WshShell.Sendkeys "3"
WshShell.Sendkeys "~"

' Fgst.Nr. vom grünen 560er: 126 038 1A 58 51 53 '
' Fgst.Nr. vom grauen 560er: 126 038 1A 47 48 65 '
End Function

Function Fgst560ECE
set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "D:\BHROOT\BIN\WINMBWW.EXE DBCP"
WScript.Sleep 3000 'Nach aufruf EPC 3 Sek. warten'
'Fahrgestelnummer eingeben und mit Enter bestätigen '
WshShell.Sendkeys "1"
WshShell.Sendkeys "2"
WshShell.Sendkeys "6"
WshShell.Sendkeys "0"
WshShell.Sendkeys "3"
WshShell.Sendkeys "8"
WshShell.Sendkeys "1"
WshShell.Sendkeys "A"
WshShell.Sendkeys "4"
WshShell.Sendkeys "7"
WshShell.Sendkeys "4"
WshShell.Sendkeys "8"
WshShell.Sendkeys "6"
WshShell.Sendkeys "5"
WshShell.Sendkeys "~"
End Function

' Fenster schließen'
Sub SubQuit
Set WSHShell = Nothing
Window.Close
End Sub
</SCRIPT>
</HEAD>

<BODY ONLOAD="SubInitFenster">
<H3>W126<BR>Fahrgestellnummereingabe<BR>für die EPC</H3>

<HR><BR><BR>

<P>Schnelle Fahrgestellnummereingabe an der EPC<BR>
hinter dem entsprechenden Fahrzeugtyp<BR>
den 'Start' Button anklicken.</P>
<TABLE BORDER="0" WIDTH="320">
<TR><TD ALIGN="center">
<FORM>
<TABLE BORDER="0" CELLPADDING="5">
<TR>
<TD>1.</TD>
<TD>300SE Kurzdaten R6</TD>
<TD><INPUT TYPE="button" VALUE="Start" NAME="button1" ONCLICK="Fgst300"></TD>
</TR>

<TR>
<TD>2.</TD>
<TD>500SE Bj.'85 mit 248 PS</TD>
<TD><INPUT TYPE="button" VALUE="Start" NAME="button2" ONCLICK="Fgst500"></TD>
</TR>

<TR>
<TD>3.</TD>
<TD>560SE Bj.'90 mit 279 PS</TD>
<TD><INPUT TYPE="button" VALUE="Start" NAME="button3" ONCLICK="Fgst560"></TD>
</TR>

<TR>
<TD>4.</TD>
<TD>560SE Bj.'89 mit 300 PS</TD>
<TD><INPUT TYPE="button" VALUE="Start" NAME="button4" ONCLICK="Fgst560ECE"></TD>
</TR>
</TABLE>
<HR><BR><BR>
<INPUT TYPE="Button" NAME="button6" VALUE="Close" ONCLICK="SubQuit" TITLE="Das Fenster wird geschlossen!">
</FORM>
</TD></TR>
</TABLE>

</BODY>
</HTML>


Content-Script-Type zweimal zu definieren ist wohl nicht ganz so richtig!
QUELLTEXT
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/vbscript">
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">


Und statt
QUELLTEXT
&lt;script LANGUAGE="vbScript">
solltest Du eher
QUELLTEXT
&lt;script LANGUAGE="vbScript">
schreiben.

cu, guido

Geschrieben von: Conny 11.08.2007 - 7:59

Hi Guido!

long time no see.
Wie geht es Dir?

Vielen Dank für Deine Hinweise, leider lösen sie (bis jetzt rolleyes.gif ) nicht mein Problem.
Nach klicken eines der Start Buttons wird das Programm zwar gestartet, die Zeile wird aber nicht geschrieben, weil die Ausführung durch die Fehlermeldung: Object erforderlich: WScript. gestoppt wird.

cu
Conny

Geschrieben von: helpy 11.08.2007 - 9:16

ZITAT(Conny @ 11.08.2007 - 8:59) *
long time no see.
Wie geht es Dir?

Hi Conny,

Bis auf einen einbandagierten Fuß (vor zwei Wochen beim Sport umgeknickt) ganz gut. Besonders im Blick auf den kommenden Urlaub (zwei Wochen in der Schweiz am Bodensee geht es mir sehr gut wink.gif

ZITAT(Conny @ 11.08.2007 - 8:59) *
Vielen Dank für Deine Hinweise, leider lösen sie (bis jetzt rolleyes.gif ) nicht mein Problem.
Nach klicken eines der Start Buttons wird das Programm zwar gestartet, die Zeile wird aber nicht geschrieben, weil die Ausführung durch die Fehlermeldung: Object erforderlich: WScript. gestoppt wird.


In HTA steht Dir Sleep nicht zur Verfügung! Zitat von Microsoft (http://www.microsoft.com/technet/scriptcenter/topics/htas/autorefresh.mspx):
ZITAT
Unfortunately, though, Sleep is a WSH method; that means it won’t work in an HTA.


Hier ein kleiner Workaround:
QUELLTEXT
' Fahrgestellanweisungen '
Function Fgst300
set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "notepad.exe" ' DEIN Programm einsetzen
'Fahrgestelnummer eingeben und mit Enter bestätigen'
window.setTimeout "Fgst300_SendKeys()", 3000
End Function

Sub Fgst300_SendKeys()
WshShell.Sendkeys "1"
WshShell.Sendkeys "2"
WshShell.Sendkeys "6"
WshShell.Sendkeys "0"
WshShell.Sendkeys "2"
WshShell.Sendkeys "4"

WshShell.Sendkeys "~"
End Sub


Vielleicht kommst Du damit ja weiter!
Einen sonnigen Gruß aus dem z.Zt. verregneten Niederbayern,
guido

Geschrieben von: Conny 11.08.2007 - 20:24

Hi Guido,

DAS muss man erst mal wissen, daß SLEEP in HTA nicht zur Verfügung steht!
(Ich wäre da nie drauf gekommen...)

Dein Workaround löst (mal wieder) mein Problem (ist ja fast so wie in alten Zeiten!)
Vielen Dank und hoffentlich sehen wir Dich mal wieder öfters in diesem Forum!
cu
Conny

Unterstützt von Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)