VBS - Abbruchbedingung

Hallo,

im Brett Computerspiele fragt Jemand nach einem Programm, das alle drei Sekunden ein Leerzeichen sendet. Für so etwas genügt ja eigentlich ein VBS, ein VB-Programm ist da wohl etwas zu heftig. :smile:

set WshShell = WScript.CreateObject("WScript.Shell")
While a = 0
WScript.Sleep 3000
WshShell.SendKeys " "
Wend

Nur, wie hält man das wieder an? Hat Jemand eine Idee?
API-Aufrufe kann man in VBS ja nicht verwenden.

Man könnte mit einer anderen VBS eine Datei schreiben und im ‚Hauptprogramm‘ prüfen, ob die Datei existiert, dann das Programm abbrechen.

Das ist mir schon zu viel und fehlerträchtig ist das auch. Der Anwender kann in eine der Dateien einen Fehler einbauen, schnell klicken ist dann auch angesagt.

Am angenehmsten wäre ein Abbruch beim drücken von ‚Esc‘.

Ich habe schon in AVB gefragt, aber bisher keine Antwort. Kein gutes Zeichen. :frowning:

Gruß Rainer

Hallo Rainer,

du fragst hier an? Die wievielte Anfrage von dir ist das? Die dritte in 6 Jahren, noch dazu in VBS *schätz* :smile:

im Brett Computerspiele

Aha, da treibst du dich auch rum *hihi* Nach vielen Moorhuhnmassakern auf meinem PC habe ich nie mehr was gespielt.

fragt Jemand nach einem Programm, das
alle drei Sekunden ein Leerzeichen sendet.

Was will er damit? Naja, ich muß ja nicht alles verstehen.

Für so etwas genügt
ja eigentlich ein VBS, ein VB-Programm ist da wohl etwas zu
heftig. :smile:

set WshShell = WScript.CreateObject(„WScript.Shell“)
While a = 0
WScript.Sleep 3000
WshShell.SendKeys " "
Wend

Nur, wie hält man das wieder an? Hat Jemand eine Idee?

Ja, Ideen habe ich viele, leider fehlt es am VBS-Wissen :smile:

Ich versuch mal systematisch vorzugehen.
In VBS ist es nicht möglich die ESC-Taste so zu belegen ddaß sie was immer auch macht und das in der Schleife abzuprüfen, so in der Art

IF „es wurde was gemacht“ Then a=1

Dann gibt es m.W. Windows übergreifende Programme mit denen man tasten neu belegen kann mit einem Programm.

Wenn nun die Esc-Taste mit so einem programm belegt ist, was z,B, eine beliebige Datei erzeugt so könnte man das in deinem Code abprüfen und handeln lassen.

Sorry Rainer, mehr fällt mir grad nicht ein *zur Uhr peil* :smile:

Gruß
Reinhard

API-Aufrufe kann man in VBS ja nicht verwenden.

Man könnte mit einer anderen VBS eine Datei schreiben und im
‚Hauptprogramm‘ prüfen, ob die Datei existiert, dann das
Programm abbrechen.

Das ist mir schon zu viel und fehlerträchtig ist das auch. Der
Anwender kann in eine der Dateien einen Fehler einbauen,
schnell klicken ist dann auch angesagt.

Am angenehmsten wäre ein Abbruch beim drücken von ‚Esc‘.

Ich habe schon in AVB gefragt, aber bisher keine Antwort. Kein
gutes Zeichen. :frowning:

Gruß Rainer

Hallo Reinhard,

du fragst hier an? Die wievielte Anfrage von dir ist das? Die
dritte in 6 Jahren, noch dazu in VBS *schätz* :smile:

ein paar mehr sind’s schon.

im Brett Computerspiele

Aha, da treibst du dich auch rum *hihi* Nach vielen
Moorhuhnmassakern auf meinem PC habe ich nie mehr was
gespielt.

Ja, auch als MOD. :smile:

fragt Jemand nach einem Programm, das
alle drei Sekunden ein Leerzeichen sendet.

Was will er damit? Naja, ich muß ja nicht alles verstehen.

Das weiß ich auch nicht. Das scheint bei einem Spiel zu helfen.

Nur, wie hält man das wieder an? Hat Jemand eine Idee?

Ja, Ideen habe ich viele, leider fehlt es am VBS-Wissen :smile:

Ich versuch mal systematisch vorzugehen.
In VBS ist es nicht möglich die ESC-Taste so zu belegen ddaß
sie was immer auch macht und das in der Schleife abzuprüfen,
so in der Art

IF „es wurde was gemacht“ Then a=1

Ich habe nichts entsprechendes gefunden. In VB/VBA würde ich ‚GetAsyncKeystate‘ verwenden. Das geht mit VBS nicht.

Dann gibt es m.W. Windows übergreifende Programme mit denen
man tasten neu belegen kann mit einem Programm.

Dann kann ich das auch gleich mit VB bauen. :smile:
Wenn ohnehin extra ein Programm installiert werden muss …

Ich glaube es immer noch nicht ganz, daß es dafür keine VBS-Lösung gibt.

Das Problem interessiert mich inzwischen grundsätzlich, so etwas kann man immer wieder gebrauchen.

Gruß Rainer

Hallo Rainer,

Ich glaube es immer noch nicht ganz, daß es dafür keine
VBS-Lösung gibt.
Das Problem interessiert mich inzwischen grundsätzlich, so
etwas kann man immer wieder gebrauchen.

bei meiner Kurzrecherche *müdbin* stieß ich auf das da:

http://www.dvbviewer.info/forum/index.php?showtopic=…

Irgendwie klingt command.vbs gut als ob man da was bei VBS einstellen könnte wie tastenbelegung, andrerseits, ich versteh kein Wort von dem was die da reden. Ich kann auch locker falsch liegen.

Wäre ich noch fit würde ich ja auf meinem Rechner suchen ob es da eine Command.vbs gibt *Zaunpfahl*
Wenn nicht, würde ich den Link in die Tonne packen. :smile:)

Wenn es dir genauso geht, okay, brauchste gar nicht zu antworten, dann sind wir uns einig, dort ist Fachchinesich für Irgendwas auch immer *gg*

Gute Nacht
Reinhard

Hallo Reinhard,

ja, schlaf Dich erst mal aus. :smile:

Ich will keine Tasten belegen, ich will mit VBS auf ein Tastaturereignis reagieren.
Wenn ich Tasten belege, brauche ich ja auch ein zweites Script, das dann gestartet wird und dann dürfte das auch eine Tastenkombination sein.

Um ein Script mit einer Tastenkombination zu starten brauche ich nichts programmieren, das kann ich in einer Verknüpfung einfach einstellen.

Ich suche eine Alternative zu GetAsyncKeystate oder einem KeyDown/KeyPress Ereignis in VBS. Wenn, dann sicher über ein Objekt, das deklariert werden muss. Ich habe nur keine Ahnung, ob es das gibt und wenn ja, wie es heißt. :smile:

Gruß Rainer

Hallo
Ich glaub, da soll bei XBlaster(Online Game) die extra Funktions Taste automatisch gedrückt werden oder so, lol

Biete an, das ganze in einen bestimmten Zeitraum oder eine bestimmte Anzahl Ereignisse stattfinden zu lassen.

MfG
Matthias

1 Like

Haqllo Matthias,

Ich glaub, da soll bei XBlaster(Online Game) die extra
Funktions Taste automatisch gedrückt werden oder so, lol

aha, XBlaster kenne ich nicht. Aber ich muss ja auch nicht alle Spiele kennen. :smile:

Biete an, das ganze in einen bestimmten Zeitraum oder eine
bestimmte Anzahl Ereignisse stattfinden zu lassen.

Eine Anzahl Minuten Laufzeit ist ein super Vorschlag!
Das ist sicher praktikabel und leicht zu programmieren.

Danke!

Gruß Rainer

Hallo Matthias,

Ich glaub, da soll bei XBlaster(Online Game) die extra
Funktions Taste automatisch gedrückt werden oder so, lol

mir ist gleich was Xblaster ist.
Mich interessiert einzig auf eine Lösung zu kommen eine Schleife wie die von Rainer in VBS abzubrechen durch Esc.

Aber neugierig wie ich bin,
hat da ein Spieler Vorteile gegenüber anderen wenn er da alle drei Sekunden ein Leerzeichen sendet?
Wofür soll das Ganze dienen *mir unklar*

Biete an, das ganze in einen bestimmten Zeitraum oder eine
bestimmte Anzahl Ereignisse stattfinden zu lassen.

Schon klar, wäre Programmtechnisch auch am einfachsten.
Aber vielleicht will der Spieler da an einem Tag 5 min Leerzeichen schicken, am nächsten Tag 3 Std lang.

Dazu müßte er dann jeweils den Code anpassen.

Ich sehe die Herausforderung immer noch darin es ihm zu ermöglichen die quasi Endlosschleife durch einen Tastenklick zu beenden.

Gruß
Reinhard

Naja, normalerweise sendet man nirgendwo automatisch Leerzeichen.
Bei X-Blaster gibt es 3 Mechs.
Defender mit Schildfunktion
Noch einen mit Nitropack(Geschwindigkeit)
Und einen mit Suchmissile

Diese 3 Funktionen werden mit der Spacetaste ausgelöst.
Diese Funktionen halten aber nur ein paar Sekunden, bzw. löst nur einmal aus.
Wenn er also durch Drücken der Space Taste 3 Sekunden lang schnell fährt, kann er mit so einem Tool 9 Sekunden lang fahren, wobei allerdings diese Funktion im Original nur 3 mal benutzt werden kann, und dann mit Tool nur einmal.
Es gibt aber auch noch andere Spiele, die ich nicht alle kenne.
(Nützlich bei Rheuma)
MfG

Hallo Reinhard,

Schon klar, wäre Programmtechnisch auch am einfachsten.
Aber vielleicht will der Spieler da an einem Tag 5 min
Leerzeichen schicken, am nächsten Tag 3 Std lang.

Dazu müßte er dann jeweils den Code anpassen.

nein. :smile:

Set WshShell = WScript.CreateObject("WScript.Shell")
TM = InputBox("Wie viele Minuten soll das Script laufen?")
If IsNumeric(TM) Then
 WScript.Sleep 5000
 NW = Dateadd("n", TM, Time)
 a = TM
 While a 0
 a = DateDiff("n", Time, NW)
 WScript.Sleep 3000
 WshShell.SendKeys " "
 Wend
 MsgBox "Script beendet."
Else
 MsgBox "Es wurde keine Zahl eingegeben, das Programm wird beendet."
End If

*gg*

Ich sehe die Herausforderung immer noch darin es ihm zu
ermöglichen die quasi Endlosschleife durch einen Tastenklick
zu beenden.

Dafür habe ich auch eine Lösung im Kopf, aber die ist sehr kompliziert, das werde ich nicht schreiben.
Gruß Rainer

Dazu müßte er dann jeweils den Code anpassen.

nein. :smile:

Hallo Rainer,

Wie „nein“?
Erklär mir bitte mal den Unterschied zwischen einer eingbauten Inputbox und Code anpassen.

Code anpassen bedeutet man ändert die 5 in 7 wenn es so sein soll

For X= 1 To 5

Wenn man davor eine Inputbox setzt und diese die 5 oder 7 vorgibt
so ist das doch für mich beides Code anpassen.
Mal zur Laufzeit, mal vorher.

Gruß
Reinhard

Hallo Reinhard,

unter Code anpassen verstehe ich einen Eingriff in den Quellcode.
Eine Zahl in die Inputbox eingeben läuft bei mir unter Programmbedienung. :smile:

Gruß Rainer

Hallo Matthias,

Naja, normalerweise sendet man nirgendwo automatisch
Leerzeichen.

*hmmh* die Anfrage kam von Rainer, du meinst er ist unnormal?
Ich muß mal in nächster Zeit darauf achten *kicher*

Danke für deine Spieleinführung, aber so genau wollte ich es gar nicht wissen.

Ich habe verstanden, wenn man da die Leertaste drückt fährt man wohl schneller. Aber gibt es da auf dem Bildschirm keine Häuser Berge Sonstiges wo man dann halt schneller dagegenprallt?

Wenn es so ist wie du sagst, daß man eh nur 9 sec schnell fahren darf, dann ist doch das Problem gelöst.
Den Code so umbasteln daß er nur dreimal läuft und fertig.

Irgendwie befürchte ich, das ist noch nicht Lösung :smile:

(Nützlich bei Rheuma)

? Wie meinst du das, wenn ich mal Rheuma kriege soll ich dieses Spiel spielen?

Gruß
Reinhard

MfG

Hallo Rainer!

Ich habe mich gestern mit diesem Problem herumgespielt. Es dürfte aber tatsächlich keine Lösung dafür geben.

Was mir zuerst die Hoffnung gegeben hat, es könnte funktionieren, war der StdIn (StandardInput). Ich dachte, vielleicht lässt sich mit der Methode „Read“ etwas schreiben.
Leider reagiert das „Read“ erst wenn man ‚Enter‘ als Dateneingabe-Ende eingibt. Und dazwischen tut das Skript aber nicht weiter mit der Schleife, bleibt also ganz einfach stehen.

Und sonst habe ich in der Referenz zum WSH nichts gefunden.

lg christoph

Hallo christoph,

danke! Dann hat es doch nicht daran gelegen, daß ich nicht richtig suchen kann.

Gruß Rainer