Batchdatei - Anmeldescript - Leeren Keyborad Buffer

OP (Firma: EleLa - www.elela.de) #2517103
Hallo,

Ich schreibe mir gerade ein Anmeldescript, der bei Autostart laufen 
soll.
Das Problem, während der Script los läuft ist das Netzwerk noch nicht 
bereit und der NET USE Befehl macht alle möglichen sachen, die ich gar 
nicht will.

Ich habe soweit eine Schleife in der Batch Datei drin, dass der NET USE 
Befehl so oft wiederholt wird bis das Laufwerk verbunden ist.

So weit klappt das.

Aber manchmal möchte der noch ein Benutzername abfrage und das stört.

Ich habe im Internet nun ein Befehl gefunden "KPUSH.COM", mit dem kann 
ich das CR Zeichen (13) einfach vor dem NET USE Befehl senden, damit 
springt der einfach raus und es geht weiter in der Schleife.

Nun, wenn keine Benutzer-Abfrage kommt, dann stehen lauter CR Zeichen im 
Tastaturbuffer.

Ich habe ein "KFLUSH.COM" gefunden, die kann zwar Zeichen aus dem 
Tastaturbuffer löschen, aber nicht das CR Zeichen :-(

Ich habe mich darauf hin mal bemüht und die alten DOS Interrups 
angeschaut und mit dem alten TurboPascal ein paar kleine Assembler 
Programme geschrieben und so versucht den Tastenbuffer zu leeren.

INT21 / AH = 0Ch macht das auch.

Aber wenn jetzt kein Zeichen im Buffer ist, dann wartet mein Programm 
bis irgend jemand eine Taste drückt (wenn zuvor dieser NET USE das CR 
wegen Benutzerabfrage geholt hat).

Hat jemand einen Trick auf Lager die ich den Tastenbuffer leeren kann?
Der muss wieder leer sein, sonst gehen andere Dateien im Batch Script 
nicht richtig.

Vielen Dank, Markus.
Persönliche Seite
Markus Müller schrieb:
> Aber manchmal möchte der noch ein Benutzername abfrage und das stört.

Sofern Du sicherstellen kannst, daß das Anmeldeskript niemals nie von 
irgendwem unbefugten angesehen werden kann, kannst Du Deine 
Netzwerklaufwerke auch gleich mit Angabe eines Benutzernamens verbinden:

net use \\server\freigabe /user:benutzername passwort

Ansonsten musst Du im Anmeldeskript gar nicht jedesmal die Laufwerke 
wiederherstellen, wenn Du sie einmalig so anlegst:

net use x: \\server\\freigabe /persistent:yes


Desweiteren könntest Du Dein Anmeldeskript dahingehend modifizieren, daß 
es a) einfach eine bestimmte Zeit lang wartet oder b) die Verfügbarkeit 
des Netzwerkes überprüft, bevor es mit dem Einrichten der 
Netzwerkverbindungen fortfährt.

Die Verwendung DOS-basierter Tools (*.com ist ein eindeutiges Indiz) 
ist jedenfalls weder nötig noch sinnvoll.
OP (Firma: EleLa - www.elela.de)
Ich habs raus gefunden...

Ich mache anstatt einen
KFLUSH  / Löschen Keybord Buffer

einfach ein

DELAY 0 /S

Denn der frägt die Tastatur ab und schließt sich wenn was drin ist. Die 
Zeit 0 macht auch keine Wartezeit.
Zwar von der Funktion her missbraucht, dafür klapp es.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.