System-Befehl (Aufrufen der Console vom Script aus)


dark_ghost

Erfahrenes Mitglied
Hallo zusammen,

ich habe folgendes Problem:

Ein script liest eine Datei ein und wenn eine bestimmte Abfrage zutrifft, soll dem Benutzer eine Meldung ausgegeben werden.
Dies soll geschehen indem sich die Console öffnet oder noch besser nur ein kleines fenster (so wie der alert Befehl bei einem javascript).

Ich weis, dass sowas mit dem Befehl system (); geht, nur hab ich es bis jetz nicht geschafft, was ich eben oben beschrieben habe.

Wäre nett wenn ihr mir auf die 'Sprünge' helfen könntet.

Danke
Andreas
 

GH@NDI

Erfahrenes Mitglied
Hallo!

Wie wird das Script denn gestartet? Normalerweise ist doch bereits eine Konsole offen, wenn man Perl-Scripte startet. Und dann ist es ja ein leichtes mittel print dem Benutzer eine entsprechende Ausgabe zu liefern.

Ausser du bewegst dich unter Windows und startest die Scripte mit wperl.exe.

Dann könntest du aber auf das Win32-Modul zurückgreifen und die Methode Win32::MsgBox() verwenden.

Wenn du unter Linux unterwegs bist, wird die Sacher vermutlich etwas komplexer, da je nach verwendete Window-Grundsystem die andere Aufrufe machen müsstest (zumindest gehe ich mal davon aus).

Oder du würdest dann selbst mithilfe von Tk dir ein unsichtbares Fenster bauen womit du dann auch wiederum MsgBoxen erzeugen kannst, die dann (sofern Tk installiert ist) auch noch Betriebssystem unabhängig wären.
 

dark_ghost

Erfahrenes Mitglied
Danke für Deine Antwort,

das Script "script.pl" wird einfach per doppelklick auf die Datei gestartet und läuft ausschließlich unter Windows.

Ziel ist es einfach eine Ausgabe zu erzeugen, wenn ein bestimmter Fall zutrifft. Diese Ausgabe soll dann eben über die Console bzw. über ein Fenster, das sich öffnet ausgegeben werden.


Danke für den Tipp mit dem Win32 Modul und der Methode! Werd mich da mal schlau machen :)


Gruß
Andreas
 

GH@NDI

Erfahrenes Mitglied
Aber wenn du unter Windows ein mit Perl assoziertes Perl-Script startest, startet sich doch sowieso eine Console, zumindest bei mir.

Perl:
print "Hallo user, schön dich zu sehen!";
system('pause');
Das als test.pl auf c: abgelegt und doppelt draufgeklickt erzeugt bei mir eine Console in der der Text steht und dann auf einen Tastendruck wartet wonach es sich beendet.

Evtl. ist das ja das, was du suchst, also das die Console bei Ausgaben auch offen bleibt, wenn dir das lieber ist, als eine MsgBox.
 

dark_ghost

Erfahrenes Mitglied
Guten Morgen,

genau so meinte ich das, nur ist mir nicht mehr eingefallen, dass ich ja einfach nur pause nach der Ausgabe hätte notieren müssen ;-) . Vielen Dank!

Trotzdem möchte ich nochmal auf die Msg Boxen zurück kommen.

Ich notiere folgendes:
Code:
Win32::MsgBox("Nahricht", 4 | MB_ICONINFORMATION, "Meldung");
Es wird ein Fenster erzeugt indem der Text steht, das funktioniert auch wunderbar. Was mich stört sind die JA | Nein Buttons. Gibt es da eine möglichkeit, dass nur ein OK Button erzeugt wird. Bzw. kann ich das selber bestimmen was für ein Button erscheint?

Vielen Dank für deine Hilfe
Andreas
 
Zuletzt bearbeitet:

GH@NDI

Erfahrenes Mitglied
Wenn du anstatt der 4 eine 0 nimmst, mit der du MB_ICONINFORMATION veroderst, bekommst du nur einen OK Button.

Steht allerdings auch in der Doku zu Win32::MsgBox ;)
 

dark_ghost

Erfahrenes Mitglied
Hallo,

perfekt das ist es was ich gesucht habe :)

Ja, da hast du recht steht in der Doku, ich habs nur net richtig zuordnen können weil ja als erklärung folgendes drin steht:

Code:
Win32::MsgBox(MESSAGE [, FLAGS [, TITLE]])
Für mich waren die Flags eben Anweisungen wie MB_ICONINFORMATION etc.
Daher wusst ich net wie ich die Zahlen richtig zuordne. :rolleyes:

Vielen Dank für Deine Hilfe
Andreas
 
H

Hakam

Ich habe Perl-Skript-Probleme immer dann, wenn der Benutzer keine Zugangsrechte auf den Linus-Server hat. So finktioniert schon gar nicht mal das Anlegen eines Ordners mit
system("mkdir Ordnername");
Irgendwie müssen da Apache-Rechte geändert wrden? Vermute ich zumindest in meinem Anfängerkopf!
 

Neue Beiträge