-+  Associazione
-+  Documenti
 |-  Modern Perl
 |-  Bibliografia
 |-  Articoli
 |-  Talk
 |-  Perlfunc
 |-  F.A.Q.
 |-  F.A.Q. iclp
-+  Eventi
-+  Community
-+  Blog
-+  Link
Corso di Perl



 


Perl su Win32

[1] C'E<egrave> un modo per non tenere sempre aperta la finestra di DOS?

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 :-).

indietro

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.

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per porre quesiti di tipo tecnico, per rimanere aggiornato su meeting, incontri, manifestazioni e novità su Perl.it.
Iscriviti!
D:
Annunci Google