use strict; # Hier kommt nur die GUI zum Testen use Win32::GUI; my $w_Main= GUI::Window->new( -name=> 'm_Window',  -text=>'Test DoTheJob',-pos=>[0,0],-size=>[380,250] ); $w_Main-> AddTextfield( -name=> "m_InText",  -prompt=>"In:",-pos=>[25,5],-size=>[200,100],-multiline=>1 ); $w_Main-> AddTextfield( -name=> 'm_OutText',  -prompt=>"Out:",-pos=>[25,110],-size=>[200,100],  -multiline=>1,-readonly=>1 ); $w_Main->AddButton( -name=> 'm_DoSys',  -text=>'DoTheJob via system',-pos=> [235,73],-width=>130 ); $w_Main->AddButton( -name=> 'm_DoShell',  -text=>'DoTheJob via Shell',-pos=> [235,98],-width=> 130 ); $w_Main->AddButton( -name=> 'm_DoShellSleep',  -text=>'DoTheJob via Shell&Sleep',-pos=> [235,123],-width=> 130 ); $w_Main-> Show(); Win32::GUI::Dialog(); sub m_DoSys_Click{  $w_Main->m_OutText->Text( Convert(0,$w_Main->m_InText->Text()) ); } sub m_DoShell_Click{  $w_Main->m_OutText->Text( Convert(1,$w_Main->m_InText->Text()) ); } sub m_DoShellSleep_Click{  $w_Main->m_OutText->Text( Convert(2,$w_Main->m_InText->Text()) ); } # Hier kommt jetzt das worum es eigentlich geht sub Convert{  my $flag= shift; #flag= 0: via system; 1: via ShellExecute;  2: via ShellExecute & sleep  my $s= shift;  #String in Datei ausschreiben  open( DATEI, ">in.txt" );  print DATEI $s."\n";  close( DATEI);  #Info in Datei mit owH_extract bearbeiten und Resultat in out.txt speichern  if( $flag==0 ){    # so funktionierts, öffnet aber ein lästiges Fenster...    system( "owH_extract.exe in.txt out.txt" );  }elsif( $flag==1 ){    # öffnet kein lästiges Fenster, aber funktioniert auch nicht...    $w_Main->ShellExecute('open',"owH_extract.exe","in.txt out.txt",'',0);  }else{    # funktioniert und öffnet kein lästiges Fenster, aber dauert halt...    $w_Main->ShellExecute('open',"owH_extract.exe","in.txt out.txt",'',0);    sleep(1);  }  #Ergebnisdatei einlesen  open(DATEI2,";  close(DATEI2);  #Ergebnis bearbeiten, wird hier zum Test einfach zurückgegeben  $s= ''; foreach(@txt){ $s.= $_;}  return $s; }