perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 17
Click for quality!




12.02.2012 / 03:33

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragPerl Script per Tasks "unsichtbar" starten
Seitenanfang
Hallo Perl Gemeinde!

Ich habe ein kleines Script geschrieben, welches mir verschiedene Systeminfos ausliest.
Es läuft stundenweise (eingeplant per Tasks).
Sobald der Task-Manager das Script aufruft geht eine CMD-Fenster auf.

Wie kann ich verhindern, dass bei der Ausführung das CMD-Fenster nicht geöffnet wird ?
Bzw. wie kann man das Programm unsichtbar starten.

MfG
Schmalle

Datum: 31.12.2006-14:50

Beitragre: Perl Script per Tasks "unsichtbar" starten
Seitenanfang
Du kannst Dein Script anstatt mit perl.exe auch mit wperl.exe aufrufen, dann sollte keine CMD-Fenster erscheinen.

Datum: 31.12.2006-17:28

Beitragre: Perl Script per Tasks "unsichtbar" starten
Seitenanfang
Mit wperl hab ich das Script soeben auch mal aufgerufen.
Jedoch ohne Erfolg.
Es öffneten sich ganz kurz sogar 2 CMD Fenster.

Gibt es sonst keine Möglichkeit ?
Z.b. ein Modul oder eine Möglichkeit das Script als Prozess laufen zu lassen ?

MfG
Schmalle

Datum: 31.12.2006-18:08

Beitragre: Perl Script per Tasks "unsichtbar" starten
Seitenanfang
Dann machst Du noch irgendwas anderes falsch. Ich habe es mit dem folgenden Script probiert:


sleep 3;
system "notepad.exe";

Wenn ich das mit

c:\perl\bin\perl.exe c:\test.pl

starte, sehe ich 3 Sekunden lang eine leere DOS-Box und dann geht der Notepad auf (als Beweis, dass das Script wirklich gelaufen ist).
Mit

c:\perl\bin\wperl.exe c:\test.pl

Passiert 10 Sekunden lang nichts (kein Fenster), dann geht Notepad auf.

Eine andere Möglichkeit gibt es nicht. perl.exe ist nun mal eine Konsolenapplikation, da geht immer ein DOS-Fenster auf. wperl.exe hingegen wird als Windows-Programm erstellt und hat keine Konsole. Beide rufen letztlich nur den eigentlichen Perl-Interpreter in der perl.dll auf.

Wenn man fallweise ein Fenster haben möchte (z.B. für Debugausgaben unter bestimmten Bedingungen) kann man auch erstmal mit perl.exe starten und das Fenster dann per Windows-Api verstecken, dann blitzt das DOS-Fenster aber meist auch kurz auf. Das mit der Api geht so:


sub showconsole {
my ($flag) = @_;

use Win32::API::Prototype;

ApiLink( 'kernel32.dll', 'HWND GetConsoleWindow()' );
ApiLink( 'user32.dll', 'BOOL ShowWindow( HWND hWnd, int iCommand )' );

my $hWnd = ::GetConsoleWindow();
::ShowWindow( $hWnd, $flag ? 0x04 : 0x00 );
}


Datum: 31.12.2006-21:16

Beitragre: Perl Script per Tasks "unsichtbar" starten
Seitenanfang
Hab es wie folgt auferufen:
c:\perl\bin\wperl.exe c:\meinscript.pl

Verwendete Module innerhalb meines Perl Scriptes:
use DBI();

Leider ohne Erfolg.
Es öffnen sich kurzzeitig 2 DOS-Fenster.

Was könnte dabei noch ein Fehler sein ?
Print Ausgabe wird keine verwendet.

Benötigt folgendes Kommando eine Konsole ???
chdir("c:/");

Ich bin langsam echt ratlos.

MfG
Schmalle

Datum: 02.01.2007-14:49

-






-
-