Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Tastatureingaben ohne Tastatur

11 views
Skip to first unread message

Dieter Bollinger

unread,
Apr 24, 2000, 3:00:00 AM4/24/00
to
Suche eine Möglichkeit ein DOS-Programm automatisch zu steuern,
z.B. mit 2 mal ENTER.

Die Umleitung von Tastencode's aus einer Datei mit " < datei" funktioniert
nicht bei jedem Programm.

Hat jemand ein Programm oder eine Routine mit der man in den Tastaturpuffer
schreiben kann.

Bin für alle Vorschläge dankbar.
Dieter Bollinger

Heiko Nocon

unread,
Apr 24, 2000, 3:00:00 AM4/24/00
to
On Mon, 24 Apr 2000 14:25:01 +0200, "Dieter Bollinger"
<n57...@n.zgs.de> wrote:

>Suche eine Möglichkeit ein DOS-Programm automatisch zu steuern,
>z.B. mit 2 mal ENTER.
>
>Die Umleitung von Tastencode's aus einer Datei mit " < datei" funktioniert
>nicht bei jedem Programm.
>
>Hat jemand ein Programm oder eine Routine mit der man in den Tastaturpuffer
>schreiben kann.

In den Tastaturpuffer zu schreiben ist nicht das Problem. Das Problem
ist, daß es trotzdem bei vielen Proggies (speziell Spiele) nicht
funktionieren wird, weil sie entweder die BIOS-Routinen (und damit den
Tastaturpuffer) garnicht erst benutzen oder die für das Einklinken
deines "Tastaturdrück"-TSR in Frage kommenden Int-Vectoren während
ihrer Laufzeit "abklemmen".

Es läuft also letztlich auf eine Analyse des jeweiligen Proggies
hinaus. Und wenn man das macht, kann man auch gleich das Proggie
patchen, statt ein auf die jeweilige Situation angepaßtes TSR zu
basteln.

MfG Heiko

--

Bitte keine eMail-Kopien von Newsgrouppostings an mich schicken.
Ich lese die NG's, in denen ich schreibe.

Thomas Rehm

unread,
Apr 24, 2000, 3:00:00 AM4/24/00
to
Hallo Dieter!

Du schriebst am 24.04.00 zum Thema "Tastatureingaben ohne Tastatur":

> Suche eine Möglichkeit ein DOS-Programm automatisch zu steuern,
> z.B. mit 2 mal ENTER.

Dafür hat sich bei mir StuffIt V3.10ß (von Terje Mathisen, 1991)
sehr bewährt (ca. 7kByte groß; Freeware).
Es handelt sich um ein Programm, welches als TSR im
Hintergrund beliebige Tastendrücke nach bestimmten Wartezeiten,
oder - alternativ - nach bestimmten Bildschirmausgaben, an den
Tastaturpuffer übergibt. Es können dabei insgesamt bis zu 127
Zeichen übergeben werden.
Allerdings gibt es Anwendungen, die den Tastaturpuffer ignorieren
und direkt über den Tastatur-Hardwareinterrupt laufen - dort
funktioniert das natürlich nicht.
Das Programm sollte per Suchmaschine problemlos zu finden sein.

Thomas.

--
Musik - nur so zum Spaß: http://www.mp3.com/thomasrehm
Die virtuelle Datenhalde: http://www.thomasrehm.de


Arno Schuh

unread,
Apr 24, 2000, 3:00:00 AM4/24/00
to
Hi,
vielleicht ist putkey.exe so etwas, was du suchst.
Könnte sein, dass ich das noch irgendwo in meinem DOS-Verzeichnis habe.

"Dieter Bollinger" <n57...@n.zgs.de> schrieb im Newsbeitrag


Suche eine Möglichkeit ein DOS-Programm automatisch zu steuern,
> z.B. mit 2 mal ENTER.
>

> Die Umleitung von Tastencode's aus einer Datei mit " < datei" funktioniert
> nicht bei jedem Programm.
>
> Hat jemand ein Programm oder eine Routine mit der man in den Tastaturpuffer
> schreiben kann.
>

Lothar Seiffert

unread,
Apr 25, 2000, 3:00:00 AM4/25/00
to
Dieter Bollinger schrieb:

> Suche eine Möglichkeit ein DOS-Programm automatisch zu steuern,
> z.B. mit 2 mal ENTER.
> Die Umleitung von Tastencode's aus einer Datei mit " < datei" funktioniert
> nicht bei jedem Programm.

Ich gehe mal davon aus, dass das Programm dann in der autoexec.bat oder einer
anderen *.bat-Datei steht und der Rechner nicht jedesmal anhalten soll.



> Hat jemand ein Programm oder eine Routine mit der man in den Tastaturpuffer
> schreiben kann.

Ich habe mal ein Programm geschrieben, welches bis zu 15 Zeichen in den
Tastaturpuffer schreiben konnte, auch "Enter". Es heisst "TIPPE" und schreibt
den (die) Parameter in den Tastaturpuffer, wobei ein ; ein "Enter" ersetzt.
"TIPPE ;;" wuerde zwei mal "Enter" schreiben. Wenn Du allerdings ein ; brauchst,
muesste ich das Programm nochmal aendern. In einer *.bat-Datei kommt erst der
TIPPE-Befehl mit Parametern, unmittelbar danach das Programm, welches den
Tasturpuffer auswertet. Aber wie schon andere sagten: Manche Programme werten
den Puffer gar nicht aus oder loeschen ihn vor einer Abfrage. Einfach ausprobieren!

Programm: http://users.ai-lab.fh-furtwangen.de/~seiffert/ghb/TIPPE.EXE (3040 Byte)
Quellcode: http://users.ai-lab.fh-furtwangen.de/~seiffert/ghb/TIPPE.PAS ( 599 Byte)

Oder gleich hier der Quellcode (Bitte beachten: 534 Byte MIT Hilfe-Text!):

Program TIPPE;Var Par:String;I:Integer;Begin Par:=ParamStr(1);For
I:=2 to ParamCount do Par:=Par+' '+ParamStr(I);If Par='' then Begin
Writeln('Das Programm schreibt seine Parameter in den Tastaturpuffer');
Writeln('Ein ; steht für eine Zeilenschaltung (C) Lothar Seiffert');
End;While ((30and(Mem[64:28]-Mem[64:26]+2))<>0)and(Length(Par)<>0) do
Begin MemW[64:MemW[64:28]]:=Ord(Par[1]);If (Par[1]=';') then
MemW[64:MemW[64:28]]:=13; Delete(Par,1,1);Inc(MemW[64:28],2);If
(MemW[64:28]=62) then MemW[64:28]:=30;End;End.

Gruss: Lothar Seiffert

Dennis Kranz

unread,
Apr 26, 2000, 3:00:00 AM4/26/00
to
Hoi !

seiffert@... quälte ihre/seine Tastatur,um folgenden Text zu schreiben:
seiffert@... pijnigde haar/zijn toetsenbord,om volgende tekst te schrijven:

> Ich habe mal ein Programm geschrieben, welches bis zu 15 Zeichen in den
> Tastaturpuffer schreiben konnte, auch "Enter". Es heisst "TIPPE" und

Da gibt es auch noch das Programm BIGBUFF,was den Tasturpuffer auf 255
Zeichen erweitert. Sollte irgendwo zufinden sind,ich habs grad nicht
griffbereit.


Doei !

Dennis

## KruisPunt v3.11 ##

- DEN...@BASIS.GUN.DE - http://members.aol.com/DennisXXXX - ICQ: 8093515 -


Winfried Borchardt

unread,
May 1, 2000, 3:00:00 AM5/1/00
to
Dieter Bollinger wrote:

> Suche eine Möglichkeit ein DOS-Programm automatisch zu steuern,
> z.B. mit 2 mal ENTER.
>
> Die Umleitung von Tastencode's aus einer Datei mit " < datei" funktioniert
> nicht bei jedem Programm.
>

> Hat jemand ein Programm oder eine Routine mit der man in den Tastaturpuffer
> schreiben kann.

program control;

{$M $4000, 0, 0}

uses dos;

const max_scan_code = 256;

var int_1c_save : pointer;

var scan_code_length : 0 .. max_scan_code;
var scan_code_list : array [0 .. max_scan_code - 1] of word;
var scan_code_index : 0 .. max_scan_code;

const cli = $fa;
const sti = $fb;

procedure key_handler (ax, bx, cx, dx, si, di, ds, es, bp : word); interrupt;
begin
if memw [seg0040:$001a] = memw [seg0040:$001c] then
begin
inline (cli);
memw [seg0040:memw [seg0040:$001a]] := scan_code_list [scan_code_index];
inc (memw [seg0040:$001c], 2);
if $003c < memw [seg0040:$001c] then
memw [seg0040:$001c] := $001e;
inline (sti);
inc (scan_code_index);
if scan_code_length <= scan_code_index then
scan_code_index := 0;
end;
end;

var
program_name : pathstr;
cmd_line : string;
key_file_name : pathstr;
key_file : text;

begin
if 1 <= paramcount then
begin
program_name := paramstr (1);
cmd_line := '';
scan_code_length := 0;

if 2 <= paramcount then
begin
key_file_name := paramstr (2);
assign (key_file, key_file_name);
reset (key_file);
while not eof (key_file) do
begin
readln (key_file, scan_code_list [scan_code_length]);
inc (scan_code_length);
end;
end;

if 0 < scan_code_length then
begin
GetIntVec ($1c, int_1c_save);
scan_code_index := 0;
SetIntVec ($1c, addr (key_handler));
end;

exec (program_name, cmd_line);

if 0 < scan_code_length then
begin
SetIntVec ($1c, int_1c_save);
if memw [seg0040:$001a] <> memw [seg0040:$001c] then
begin
inc (memw [seg0040:$001a], 2);
if $003c < memw [seg0040:$001a] then
memw [seg0040:$001a] := $001e;
end;
end;
end;
end.


Claus Reibenstein

unread,
May 3, 2000, 3:00:00 AM5/3/00
to
Winfried Borchardt schrieb:

> > Hat jemand ein Programm oder eine Routine mit der man in den Tastaturpuffer
> > schreiben kann.
>
> program control;
>
> {$M $4000, 0, 0}
>

> [remainder deleted]

Hübsch sieht's ja aus, aber welche Sprache ist das?


Jochen Erwied

unread,
May 4, 2000, 3:00:00 AM5/4/00
to
Claus Reibenstein <c.reib...@pop-hannover.de> wrote:

>> program control;
>>
>> {$M $4000, 0, 0}

> Hübsch sieht's ja aus, aber welche Sprache ist das?

Turbo Pascal.

--
Jochen Erwied @home: joc...@erwied.de +49-208-38800-18, FAX: -19
Sauerbruchstr. 17 @work: j...@mbs-software.de +49-2151-7294-24, FAX: -50
D-45470 Muelheim All addresses in this article are valid and replyable!

Lothar Seiffert

unread,
May 4, 2000, 3:00:00 AM5/4/00
to
Claus Reibenstein schrieb:

> > program control;
> > {$M $4000, 0, 0}
> Hübsch sieht's ja aus, aber welche Sprache ist das?

Aber, aber ... Du liest de.comp.os.msdos und kennst so eine
schoene alte Programmiersprache wie Borland Turbo Pascal
nicht?

Ich hatte ja ebenfalls mein Programm gepostet:

Oder gleich hier der Quellcode (bitte beachten: 525 Byte MIT Hilfe-Text!):

Program TIPPE;Var Par:String;I:Integer;Begin Par:=ParamStr(1);For I:=2
to ParamCount do Par:=Par+' '+ParamStr(I);If Par='' then Begin
Writeln('Das Programm schreibt seine Parameter in den Tastaturpuffer');
Writeln('Ein ; steht für eine Zeilenschaltung (C) Lothar Seiffert');

End;While((30and(Mem[64:28]-Mem[64:26]+2))<>0)and(Length(Par)<>0)do


Begin MemW[64:MemW[64:28]]:=Ord(Par[1]);If(Par[1]=';')then
MemW[64:MemW[64:28]]:=13; Delete(Par,1,1);Inc(MemW[64:28],2);If

(MemW[64:28]=62)then MemW[64:28]:=30;End;End.

Gruss: Lothar Seiffert

Ulrich F. Heidenreich

unread,
May 5, 2000, 3:00:00 AM5/5/00
to
Jochen Erwied (4 May 2000 00:28:32 +0200):

>Turbo Pascal.

Blaise würde sich im Grabe umdrehen. Wir sollten uns vorsichtshalber
drauf einigen, der Autor war der Meinung, es sei Pascal ...

Thomas Rehm

unread,
May 5, 2000, 3:00:00 AM5/5/00
to
Hallo Ulrich!

Du schriebst am 05.05.00 zum Thema "Re: Tastatureingaben ohne Tastatur":

>> Turbo Pascal.

> Blaise würde sich im Grabe umdrehen. Wir sollten uns vorsichtshalber
> drauf einigen, der Autor war der Meinung, es sei Pascal ...

TurboPascal hat in der Tat wenig mit Pascal zu tun - denn Pascal
fehlen da ein paar Möglichkeiten, die in der realen (PC-) Welt
aber ganz dringend benötigt werden.

Außerdem würde sich Blaise nur ungerne im Grabe umdrehen (der ist
nämlich völlig unschuldig) sondern eher ein bekannter Professor einer
eidgenössischen Hochschule. Aber der lebt noch und wird Dir so schnell
nicht den Gefallen tun, in irgendwelchen muffigen Gräbern zu rotieren.

;-)

besserwisserisch,
Thomas.

--
"Die virtuelle
Datenhalde": Satirisches,
Skurriles, Nachdenkenswertes: http://www.thomasrehm.de
Elektronische & experimentelle Musik: http://www.mp3.com/thomasrehm

Lothar Seiffert

unread,
May 6, 2000, 3:00:00 AM5/6/00
to
Markus Mehring schrieb:
> [Program TIPPE; Quellcode]
> Ich hätte gerne etwas Parmesan und einen Chianti dazu.

Es hat zwar eine Weile gedauert, aber jetzt ist der Groschen
gefallen: Spaghetti-Code ist es nun wirklich nicht, sondern
schulbuchmäßig strukturierte Programmierung ohne GOTO, nicht
mal mit Continue oder Break. Ich habe nur die überflüssigen
Leerzeichen und Kommentare gelöscht.

Ulrich F. Heidenreich schrieb:

> Blaise würde sich im Grabe umdrehen. Wir sollten uns vorsichtshalber
> drauf einigen, der Autor war der Meinung, es sei Pascal ...

Der Erfinder von Pascal ist ... Niklaus Wirth. Das ist zwar schon 30 Jahre
her, der Mann ist zwischenzeitlich pensioniert, lebt aber noch. Siehe auch:
http://www.cs.inf.ethz.ch/~wirth/

Gruss: Lothar Seiffert

PS: Das Programm sieht MIT Leerzeichen und Kommentaren so aus:

{ Schreibt die Kommandozeilen-Parameter in den Tastaturpuffer }
Program TIPPE;

Var Par : String; { Komandozeilen-Parameter }
I : Integer; { Allgemeiner Zähler }

Begin
{ Parameterstring übertragen }


Par:=ParamStr(1);
For I:=2 to ParamCount do Par:=Par+' '+ParamStr(I);

{ Hilfetext ausgeben, wenn keine Kommandozeilen-Parameter vorhanden sind }


If Par='' then Begin
Writeln('Das Programm schreibt seine Parameter in den Tastaturpuffer');

Writeln('Ein ; steht f r eine Zeilenschaltung (C) Lothar Seiffert');
End;
{ Zeichen in den Tastaturpuffer übertragen, bis dieser voll ist }
While ((30 and (Mem[64:28]-Mem[64:26]+2))<>0) and (Length(Par)<>0) do Begin
MemW[64:MemW[64:28]]:=Ord(Par[1]); { Erstes Zeichen von Par in Tastaturpuffer eintragen }
If (Par[1]=';') then MemW[64:MemW[64:28]]:=13; { Enter in Tastaturpuffer eintragen, wenn ; in Par }
Delete(Par,1,1); { Erstes Zeichen von Par löschen }
Inc(MemW[64:28],2); { Anzahl der Zeichen im Tastaturpuffer um 1 erhöhen }
If (MemW[64:28]=62) then MemW[64:28]:=30; { An den Anfang des zyklischen Tastaturpuffers zurück }
End;
End.

Claus Reibenstein

unread,
May 7, 2000, 3:00:00 AM5/7/00
to
Lothar Seiffert schrieb:

> Claus Reibenstein schrieb:
> > > program control;
> > > {$M $4000, 0, 0}
> > Hübsch sieht's ja aus, aber welche Sprache ist das?
>
> Aber, aber ... Du liest de.comp.os.msdos und kennst so eine
> schoene alte Programmiersprache wie Borland Turbo Pascal
> nicht?

In der Tat, so ist es. Pascal ist eine der Sprachen, die mir in meiner
mittlerweile 20 Jahre währenden beruflichen Laufbahn erspart geblieben
sind, ebenso wie RPG2, APL, COBOL ...

Arwed Reichel

unread,
May 27, 2000, 3:00:00 AM5/27/00
to
Dieter Bollinger wrote:

> Suche eine Möglichkeit ein DOS-Programm automatisch zu steuern,
> z.B. mit 2 mal ENTER.
>
> Die Umleitung von Tastencode's aus einer Datei mit " < datei" funktioniert
> nicht bei jedem Programm.
>

> Hat jemand ein Programm oder eine Routine mit der man in den Tastaturpuffer
> schreiben kann.
>

> Bin für alle Vorschläge dankbar.

> Dieter Bollinger

Hallo Dieter, jetzt ist Dein Posting zwar schon etwas aelter und Du hast
vielleicht auch schon 'ne Loesung, aber trotzdem:

Fuer ein an den PC angeschlossenes Spektrometer, das von etwas unbedarften
Nutzern zur Datenerfassung im grossen Stil benutzt werden sollte, habe ich mal
auf der Basis eines TSR-Programms von Michael Tischer ("PC-intern") eine
Loesung gebastelt, die auf einen Tastendruck hin eine bestimmte Zeichensequenz
in den Tastaturpuffer schrieb. Der Tastendruck loeste ein TSR-Programm aus und
dies hat dann die Zeichen eingetragen. Ein zweites TSR-Programm wurde durch
die graua Plustaste gestartet und hat den Bildschirminhalt (die Wertetabelle
der Messung) ausgelesen und in eine Datei geschrieben. Mag vielleicht etwas
wild klingen, hat aber sehr verlaesslich funktioniert.

Wenn Dich das noch interessieren sollte, melde Dich doch noch mal, dann wuerde
ich die Sachen mal ausgraben. Ist uebrigens teilweise in Assembler (wegen
TSR), aber das eigentliche ist in C.

Viele Gruesse von Arwed


Holger Petersen

unread,
May 28, 2000, 3:00:00 AM5/28/00
to
Arwed Reichel <ar...@familie-reichel.de> writes:

[original noch nicht hier angekommen]

>Dieter Bollinger wrote:

>> Suche eine Möglichkeit ein DOS-Programm automatisch zu steuern,
>> z.B. mit 2 mal ENTER.
>>
>> Die Umleitung von Tastencode's aus einer Datei mit " < datei" funktioniert
>> nicht bei jedem Programm.
>>
>> Hat jemand ein Programm oder eine Routine mit der man in den Tastaturpuffer
>> schreiben kann.


Suche nach bei www.simtel.net nach " keyfake ".

Gruss, Holger

0 new messages