Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7754[/thread]

externe Programme ohne Fenster starten: unter Windows

Leser: 1


<< >> 4 Einträge, 1 Seite
JochenH
 2006-03-02 16:03
#63414 #63414
User since
2006-03-02
3 Artikel
BenutzerIn
[default_avatar]
ich arbeite an eine Perlskript unter Windows,
und ich möchte mein Skript unsichtbar machen.
Das heisst, ohne jegliches Fenster beim Ausführen.

Mit wperl.exe geht das ja so einigermaßen, aber wenn ich in meinem Skript ein externes Programm ausführe
(zB. mit system("zip.exe test.zip *.*");)
, dann wird für dieses Programm ein extra Fenster aufgemacht.
Auch das Benutzen von system("start /B zip.exe test.zip *.*"); funktioniert nur mit Fenster.
Probiert habe ich bereits: fork-exec, open3, qx aber alle machen beim Starten des EXE-Programms ein Fenster auf  :(

Wie kann ich das verhindern ?
GwenDragon
 2006-03-02 16:12
#63415 #63415
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
JochenH
 2006-03-06 09:13
#63416 #63416
User since
2006-03-02
3 Artikel
BenutzerIn
[default_avatar]
Super !

so funktionierts :

Code: (dl )
1
2
3
use Win32::Process;
Win32::Process::Create( $proc, c:\zip.exe, "zip.exe test.zip *.*", 1, DETACHED_PROCESS, '.' );
$proc->Wait(INFINITE);
Matze
 2006-03-11 10:53
#63417 #63417
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
Man könnte es aber auch einfach so machen:
Code: (dl )
1
2
3
4
5
6
7
#!/usr/bin/perl
#
use strict;
use Win32;

Win32::SetChildShowWindow(0);
system("irgendein Programm");


Win32::SetChildShowWindow(bool):
 Mit bool=0 legt man fest, dass alle Programme die mit
 system aufgerufen werden unsichtbar ablaufen.
Mit freundlichen Grüßen: Matze
<< >> 4 Einträge, 1 Seite



View all threads created 2006-03-02 16:03.