Ci sono diverse possibilitE:
1. usare wperl.exe (fornito con il Perl di ActiveState) per eseguire lo script.
Questo E una copia di perl.exe che non crea alcuna finestra di console. Si ricordi comunque che non si avranno a
disposizione STDIN/STDOUT/STDERR, dunque non si potranno nemmeno catturare gli errori.
Ci si assicuri che i propri script siano esenti da errori prima di chiamarli con wperl.exe .
Si noti anche che maggiori informazioni su questa modalitE sono diponibili qui:
http://jenda.krynicky.cz/perl/GUIscripts.html
2. usare Win32::GUI e le linee seguenti:
use Win32::GUI;
my $hw = Win32::GUI::GetPerlWindow();
Win32::GUI::Hide($hw);
3. usare Win32::API, ma questo richiede parecchio lavoro:
use Win32::API 0.20;
# per completezza
use constant SW_HIDE => 0;
use constant SW_SHOWNORMAL => 1;
# le API che ci servono
my $GetConsoleTitle = new Win32::API('kernel32', 'GetConsoleTitle', 'PN', 'N');
my $SetConsoleTitle = new Win32::API('kernel32', 'SetConsoleTitle', 'P', 'N');
my $FindWindow = new Win32::API('user32', 'FindWindow', 'PP', 'N');
my $ShowWindow = new Win32::API('user32', 'ShowWindow', 'NN', 'N');
# salvo il titolo corrente della console
my $old_title = x 1024;
$GetConsoleTitle->Call( $old_title, 1024 );
# creo un nuovo titolo (fake)
my $title = "PERL-$$-".Win32::GetTickCount();
# imposto la nostra stringa come titolo della console
$SetConsoleTitle->Call( $title );
# aspetto 40 millisecondi per permettere a Windows di rinominare la finestra
Win32::Sleep(40);
# cerco la finestra mediante il titolo
$hw = $FindWindow->Call( 0, $title );
# reintegro il vecchio titolo
$SetConsoleTitle->Call( $old_title );
# nascondo la console
$ShowWindow->Call( $hw, SW_HIDE );
# aspetto 1 secondo, poi mostro di nuovo la console
sleep(1);
$ShowWindow->Call( $hw, SW_SHOWNORMAL );
quello che fa il codice qua sopra E quello che fa Win32::GUI (E un trucco trovato nella documentazione MSDN :-). |
|
AUTORE E COPYRIGHT
Copyright (©) 2000 -> 2003 Nordest Perl Mongers.
Questa documentazione è libera; puoi ridistribuirla e/o modificarla secondo gli stessi termini applicati al Perl.
Indipendentemente dalle modalità di distribuzione, tutti gli esempi di codice in questo file sono rilasciati al pubblico dominio. Potete, e siete incoraggiati a farlo, utilizzare il presente codice o qualunque forma derivata da esso nei vostri programmi per divertimento o per profitto. Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese
ma non è obbligatorio. |