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
>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.
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
"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.
>
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
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 -
> 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.
> > 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?
>> 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!
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:
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: 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
>Turbo Pascal.
Blaise würde sich im Grabe umdrehen. Wir sollten uns vorsichtshalber
drauf einigen, der Autor war der Meinung, es sei Pascal ...
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
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 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 ...
> 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
[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