Nello scorso numero abbiamo introdotto il linguaggio REXX. Prima di riprendere l'argomento in maniera più sistematica (aspettiamo i vostri commenti in proposito), per mostrare come è semplice creare dell utility usando il REXX, con questo numero vi guidiamo alla realizzazione di una utility PM che vi permetterà, nel caso usiate il boot manager, di resettare il sistema o di riavviarlo da un'altra partizione o sistema operativo con un semplice click su un'icona.
call RxFuncAdd 'RxMessageBox', 'RexxUtil', 'RxMessageBox'o nel caso sia necessario usare più funzioni, caricando tutte le funzioni disponibili:
call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs' call SysLoadFuncsVolendo scaricare la DLL dalla memoria, al termine dell'esecuzione (cosa non strettamente necessaria, specialmente nel nostro caso) si dovrà usare la funzione SysDropFuncs() con la seguente sintassi:
call RxFuncAdd 'SysDropFuncs', 'RexxUtil', 'SysDropFuncs' call SysDropFuncsnel caso precedentemente si sia caricata solo la funzione che interessava (nel nostro esempio RxMessageBox), oppure semplicemente:
call SysDropFuncsnel caso si siano precedentemente caricate tutte le funzioni.
action = RxMessageBox(text, [title], [button], [icon])

Dove:
PMREXX [drive][path]SCRIPT.CMD [script_parameters]Dove:
PMREXX [drive:][\path]MSGBOX.CMD [stile tasto][stile icona][titolo Message Box]per esempio:
PMREXX D:\TEST\MSGBOX.CMD ABORTRETRYIGNORE HAND Esempio di Message BoxPremendo su uno dei tasti visualizzati nella Message Box, apparirà una nuova Message Box in cui viene riportato il tipo di tasto premuto.

/* MSGBOX.CMD - esempio di uso di RxMessageBox() - */
/* (c) 1996 Alessandro Cantatore - Team OS/2 - Italia */
/* carica la funzione in memoria */
call RxFuncAdd 'RxMessageBox', 'RexxUtil', 'RxMessageBox'
/* acquisisce gli argomenti passati dalla riga di comando */
parse arg button icon title
text = 'Prova!!!' /* testo visualizzato nella message box*/
if button = '' /* se non è stato introdotto alcun */
then /* argomento visualizza la message box */
result = RxMessageBox(text) /* di default */
else /* altrimenti lo stile prescelto */
result = RxMessageBox(text, title, button, icon)
/* viene usata l'istruzione "select" per mostrare in una seconda message box */
/* un messaggio indicante il tasto che precedentemente era stato premuto */
select
when result = 1
then text = " Hai premuto OK!"
when result = 2
then text = " Hai premuto Annullo!"
when result = 3
then text = " Hai premuto Interrompere!"
when result = 4
then text = " Hai premuto Riprovare!"
when result = 5
then text = " Hai premuto Ignorare!"
when result = 6
then text = " Hai premuto Sì!"
when result = 7
then text = " Hai premuto No!"
when result = 8
then text = " Hai premuto Invio!"
otherwise nop
end /* select */
title = "Pulsante selezionato:"
icon = "INFORMATION"
/* notate la differenza di sintassi tra la chiamata con "call" e la chiamata */
/* precedente in cui il valore di ritorno di "RxMessageBox()" veniva */
/* assegnato a "result". Inoltre il parametro "button" non è stato */
/* specificato, ma al suo posto si è lasciato uno spazio vuoto, in questa */
/* seconda message box verrà perciò visualizzato solo il pulsante di default */
call RxMessageBox text, title, , icon
exit

Lo script è piuttosto breve:
/* REBOOTER.CMD - (c) 1995-96 Alessandro Cantatore - Team OS/2 Italia */
/* i parametri sono: */
/* drive = lettera identità della partizione da avviare */
/* prompt = messaggio da visualizzare nella finestra */
parse arg drive prompt
call RxFuncAdd 'RxMessageBox', 'RexxUtil', 'RxMessageBox'
if RxMessageBox(prompt, "RICHIESTA DI CONFERMA", "OKCANCEL", "QUERY") = 1
then
"SETBOOT /IBD:" || drive /* la doppia barra verticale "||" serve ad */
/* unire il contenuto della variabile drive */
/* al comando SETBOOT /IBD: */
call RxFuncAdd 'SysDropFuncs', 'RexxUtil', 'SysDropFuncs'
call SysDropFuncs
exit
Copiato lo script e salvatolo nel file REBOOTER.CMD, per il miglior utilizzo dovremo creare degli oggetti programma:

A questo punto potremo trascinare il nuovo oggetto sul Pannello di avvio spostando l'oggetto originale dove preferiamo. Per chiudere la corrente sessione OS/2 riavviando il computer dalla partizione C su cui è installato, nel precedente esempio, il DOS 6.2 sarà sufficiente cliccare sull'icona del nuovo oggetto confermando od annullando poi il riavvio dalla message box che apparirà.
Creati diversi oggetti con impostazioni differenti, potremo riavviare il sistema dalla partizione preferita senza che sia necessario caricare il menu del Boot Manager e selezionare la partizione voluta.
Nota: con questo metodo i file INI non vengono aggiornati, per cui non vengono salvate alcune modifiche apportate recentemente al sistema come la nuova posizione delle icone sulla Scrivania, la dimensione di alcune finestre, ecc. Se non avete apportato alcun cambiamento importante, dall'ultima volta che avete avviato il sistema, potete tranquillamente usare REBOOTER.CMD, altrimenti è opportuno chiudere il sistema secondo il metodo usuale.
| Pagina precedente |
| Home Page |
| Sommario |
|
Pagina successiva |
|---|