Schrift
[thread]5821[/thread]

Texteingabe in Dosprogrammen simulieren

Leser: 1


<< >> 10 Einträge, 1 Seite
print | die
 2003-10-14 18:58
#63437 #63437
User since
2003-10-14
3 Artikel
BenutzerIn
[default_avatar]
Hallo
ich suche eine Möglichkeit um Wörter die ich mit einem Perlscript aus einer Textdatei ausgelesen habe, in vorgegebener Reihenfolge, als Tastatureingabe getarnt, in ein Dos Programm einzugeben.
Code: (dl )
1
2
3
4
5
6
7
8
9
...
s/(\w)\t(\d)\t(\w)/i

#Ich weiß dass das Nächste Quatsch ist. Ist ja nur ein Konzept
print STDIN "$2";
print STDIN \t; #Tabulator Taste um in das nächste Eingabefeld zu kommen
print STDIN "$3";
print STDIN \t;
...

Hierfür steht mir nur Win98 zur Verfügung.

Für Hilfe wäre ich sehr dankbar.
Und bitte keine Kommentare wie "Heute schon Gegooglet?"
JA. Nur Google lässt in letzter Zeit zu wünschen übrig.
betterworld
 2003-10-14 19:03
#63438 #63438
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Musst halt nach STDOUT und nicht nach STDIN printen. STDOUT ist sowieso standard. Dann einfach "perl script.pl | program" und fertig. Allerdings funktioniert das unter DOS nicht mit allen Programmen, da einige direkt auf die Tastaturhardware oder so zugreifen
Relais
 2003-10-14 19:04
#63439 #63439
User since
2003-08-06
2244 Artikel
ModeratorIn
[Homepage] [default_avatar]
Und? Heute schon gegooglet? (ich noch nicht.)

Code: (dl )
1
2
3
4
5
6
7
$| = 1; # Damit print-Ausgaben nicht gepuffert werden.
my $programm = "echo";
open( PIPE, " | $programm" )
or die qq(Konnte Programm "$programm" nicht aufrufen -- $!\n);
print PIPE "Was auch immer.\n";
# print PIPE "weiteres\n"; # ...
close PIPE;
Erst denken, dann posten --
26. Deutscher Perl- u. Raku -Workshop 15. bis 17.04.2024 in Frankfurt/M.

Winter is Coming
Strat
 2003-10-14 19:15
#63440 #63440
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Voraussetzungen:
x) Dosprogramm nimmt Input von STDIN an und gibt Output nach STDOUT, und zwar immer Zeile fuer Zeile: CPAN:IPC::Open2 oder CPAN:IPC::Open3
x) Dosprogramm nimmt Input von STDIN an und gibt Output nach STDOUT, aber wahllos: CPAN:Expect
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
havi
 2003-10-14 21:09
#63441 #63441
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
User: print | die
steht auf: Awaiting Authorisation

Gruss
havi
print | die
 2003-10-15 17:25
#63442 #63442
User since
2003-10-14
3 Artikel
BenutzerIn
[default_avatar]
Danke für die Vorschläge. Aber eine PIPE habe ich auch schon ausprobiert. Das Programm ignoriert alles was man im auf diese Art mitteilt.

Das mit STDIN und STDOUT ist mir schon klar. Ich meinte damit ja auch sowas wie z.B. die Befehle über die Tastaturtreiber (die echten oder simulierte) zu schicken und dem System eine Tastatureingabe in einem paralell laufenden Prozess zu simulieren.
...
Ein Bekannter, aus einem anderen Forum, schlägt mir gerade eine Perl-Teillösung vor. Ich schreibe später genauer was und wie.
Muss weiterarbeiten sonst krieg ich auf die Finger.

ps kann man irgendwie seinen angezeigten Namen ändern? Ich war jung und naiv..ah ich meine lange wach und müde.
Ich weiß: neu hier und gleich extra Wünsche. Sorry\n\n

<!--EDIT|print | die|1066224990-->
havi
 2003-10-15 17:49
#63443 #63443
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
[quote=print | die,15.10.2003, 15:25]ps kann man irgendwie seinen angezeigten Namen ändern? Ich war jung und naiv..ah ich meine lange wach und müde.  
Ich weiß: neu hier und gleich extra Wünsche. Sorry[/quote]
Schreib doch mal eine email an strat@perl-community.de

Gruss
havi
 2003-10-15 17:51
#63444 #63444
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Ich glaube ich verstehe dich jetzt ganz falsch, aber versuchen wir es einmal!

Willst du simulieren das ein Benutzer Eingaben macht?

Wenn ja, hier hast du eine Lösung in VBS!

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "calc"
WScript.Sleep 100
WshShell.AppActivate "Calculator"
WScript.Sleep 100

WshShell.SendKeys "1"
WScript.Sleep 100
WshShell.SendKeys "{+}"
WScript.Sleep 100
WshShell.SendKeys "1"
WScript.Sleep 100
WshShell.SendKeys "{ENTER}"

Set WshShell = Nothing


Gruss
print | die
 2003-10-16 00:33
#63445 #63445
User since
2003-10-14
3 Artikel
BenutzerIn
[default_avatar]
:laugh: Danke so funktioniert's.
Ich schreib jetzt mal ein Perlscript. Morgen probiere ich es an dem Programm aus und stelle die Ergebnise in das Forum.

Meine aktuelle Lösung war weniger elegant. Ich wollte ein freeware Programm names "Autoit" verwenden, dass für solche automatisierungen geschrieben wurde. Aber mit VBS ist das Ganze viel portabeler.
havi
 2003-10-16 11:18
#63446 #63446
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Wunderbar!
Schoen das ich dir helfen konnte.

Gruss
<< >> 10 Einträge, 1 Seite



View all threads created 2003-10-14 18:58.