Sincronizza Indice |
Scarica il progetto |
Testo dell'articolo |
Stampa l'articolo |
Devo creare un programmino EXE in Visual Basic che permetta di lanciare
un file di nome MPEG4FIX.INF. L'operazione in questione è molto semplice. La stringa da far eseguire al sistema è: "RUNDLL.EXE setupx.dll,InstallHinfSection DefaultInstall 132 %1" Naturalmente, secondo le regole del sistema Windows, al posto del %1 va inserito il nome completo del file da installare. La soluzione che adotteremo in questo esempio è quella di inserire questo programma nella stessa cartella dove il file INF risiede. Inseriamo sopra un form un pulsante di nome InstallButton. Il click sopra di esso invocherà l'installazione del file INF.
Il codice si compone di poche righe. Per comodità abbiamo inserito anche una funzione che attende la chiusura del programma di installazione del file INF. Al termine d'essa apparirà un messaggio di conferma.
La riga 2 definisce una costante
di nome RigaInstallazione che contiene la stringa da eseguire al
fine di installare un file INF. Ovviamente abbiamo rimosso il %1 perché
al posto di esso forniremo il nome del file INF. All'interno della routine legata all'evento Click sopra il pulsante
InstallButton abbiamo le istruzioni di installazione.
In quest'operazione sfrutteremo la gestione degli errori. La riga successiva utilizza l'istruzione Shell che chiama un processo
esterno in maniera asincrona,
ovvero non attende la chiusura del programma esterno. ReturnValue = Shell(RigaInstallazione & App.Path & "\" & FileINF) La funzione Shell riceve come parametro una stringa composta da 4 parti:
L'unione dei quattro segmenti compone la corretta stringa di installazione del programma contenuto nel file MPEG4FIX.INF. La funzione Shell restituisce il PID (Process ID - Numero del processo) del programma chiamato. Alla riga 9 inizia un ciclo che dura fintanto che ReturnValue
è diverso da 0. Per cui all'interno del ciclo abbiamo l'istruzione AppActivate che assicura che la finestra d'installazione del file INF sia in primo piano. AppActivate riceve come parametro il PID del programma da attivare. All'interno dei cicli a lunghezza indeterminata è fondamentale inserire sempre un'istruzione DoEvents. Senza d'essa il nostro programma andrebbe alla massima velocità permessa dal processore, con il conseguente difetto di rallentare (se non addirittura bloccare) il programma esterno.
Nel momento in cui l'esecuzione del programma esterno chiamato attraverso
la funzione Shell termina, non viene comunicato nulla al programma
Visual Basic. Subito dopo il ciclo abbiamo una semplice istruzione MsgBox che
visualizza un messaggio di conferma dell'avvenuta installazione. |
Il difetto principale di questo semplice programmino è quello
di non poter controllare se l'installazione del programma è andata
a buon fine. Fibia
FBI
|
Torna all'introduzione delle Richieste dei lettori |