http://digilander.libero.it/Cenati Stampare con Windows |
|
|
||
|
Stampare con Vbscript Stampare da Windows è sempre stato un problema. Le stampanti, come tutte le risorse, sono potenzialmente condivise da più processi o da più utenti. Con il DOS, invece, il computer era più personal. Quindi bastava inviare alla stampante una stringa di testo per vederla comparire sulla carta. Chiariamo subito che in VbScript non c'è nessun comando per gestire la stampa. E' quindi diverso da Visual Basic, che possiede un esteso set di comandi per impostare l'aspetto delle pagine a stampa. Per stampare con Windows bisogna appoggiarsi a qualche programma esterno. Qualche applicazione che permetta di creare un testo tramite script e che abbia un comando di stampa attivabile dalla command line oppure attraverso un collegamento al suo modello ad oggetti. In questa pagina vedremo come stampare usando il notepad, usando alcune librerie di sistema di Windows, con Word e con altri programmi forniti insieme al sistema operativo. Stampare con notepad Notepad è presente in tutte le versioni di Windows. Pur permettendo di fare solo poche cose, è una grande risorsa. Può essere invocato dalla linea di comando con lo switch "/p" che permette di mandare in stampa il file di testo passato come argomento. Quindi il comando notepad.exe /p c:\autoexec.bat chiede al blocco note di stampare il file autoexec presente nella directory radice. Al termine della stampa, Notepad si chiude automaticamente. MioFile = "c:\Documenti\Giovanni\prova.txt" Il secondo parametro è stato impostato a 7 e indica che il blocco note deve essere avviato in una finestra minimizzata (presente solo nella barra di Windows in fondo allo schermo. Il parametro True indica di attendere che notepad abbia finito di lavorare prima di terminarlo. L'inconveniente di questo metodo è che viene stampato anche il nome del file in testa al foglio e il numero di pagina in calce. Per il filename si può ovviare mettendo un nome che sembri un titolo e omettendo l'estensione. Ad esempio se il file si chiama "Report al 10 ottobre", sembrerà un titolo. Invece "stampa.txt" non lo sembrerà. Chiaramente è possibile scrivere quello che si vuole nel file prima di stamparlo. Le funzioni per creare e modificare con semplicità un documento di testo sono state illustrate trattando il FileSystemObject, al quale rimando per i dettagli. In questo esempio vediamo invece come chiedere a Windows un nome di file unico, come scriverci qualcosa dentro e come stamparlo con notepad. Il fatto di ottenere dal sistema operativo un filename unico permette di evitare problemi di omonimia di file, rischiando di cancellare o sovrascrivere qualcosa che ci serviva. Oppure causando un errore di runtime perchè si cerca di cancellare un file di sola lettura prima di riscriverlo. Certamente questi errori si possono evitare. Ad esempio scrivendo i propri testi in file dai nomi originali (non prova.txt, come ho fatto io, ma magari Print7570.tmp) e magari ricordandosi di crearli forzando la cancellazione (nel caso esistano già) e avendo l'accortezza di cancellarli al termine dello script. Il fatto che l'estensione sia TMP, inoltre, lascia intendere che possono essere rimossi senza problemi se appena hanno una data diversa da quella odierna. '****************************************************** Stampare usando le DLL di Windows Mi è stato segnalato questo metodo per stampare file in formato htm, rtf ed anche testo. La libreria MSHTML.dll, installata con Internet Explorer, permette di invocare la finestra di dialogo di stampa ed inviare il documento al dispositivo selezionato. In Windows ME la libreria MsHtml.dll è in C:\Windows\System, mentre in XP è in C:\Windows\System32 Riporto qui sotto il codice relativo all'utilizzo di questa funzione. A me non funzionava, ma Massimo Gagliardi di Software Box snc (www.swbox.it) mi ha segnalato che occorre racchiudere il nome del file tra virgolette. file="c:\testo.rtf" Appare però la finestra di scelta della stampante. Stampare usando Word Utilizzare Word, se installato, per produrre delle stampe è molto facile. Nell'esempio riportato qui sotto, l'applicazione viene invocata ma rimane nascosta. In questo modo rimane oscuro all'utente il modo il cui viene preparata la pagina. Per mostrare la finestra di word basterebbe impostare oWord.visible=true. Vengono impostate alcune costanti utilizzate da Word, i cui valori si possono ottenere facilmente dalla finestra "immediata" dell'editor di visual basic scrivendo un punto di domanda seguito dal nome della costante. Questo è utile quando si registra una macro e la si vuole trasportare in vbs. Dato che le costanti proprie del vba di word devono essere esplicitamente avvalorate in vbs, basta scorrere la macro generata da registratore di word e chiederne il valore nella finestra immediata. Una volta istanziato l'oggetto, aggiungo un documento vuoto e comincio a scriverci. Prima scelgo un font di caratteri, poi una dimensione, poi il tipo di allineamento del paragrafo. Dopo aver inserito il testo, forzo un "fine paragrafo". Al termine, chiedo a Word di stampare il documento. Come se si premesse sul tasto "stampa" della barra degli strumenti. Potrei anche salvare il documento, impostando il percorso ed il nome. set oWord=createobject("word.application") Se invece voglio stampare un file già salvato, posso lanciare word con alcuni switch e con il nome del file: "C:\Programmi\Microsoft Office\Office\WINWORD.EXE" /x /n documento.doc Ovviamente dovrò farlo tramite un'istruzione wShell.run, come per lanciare il notepad nel primo esempio di questa pagina.
Molti tipi di file hanno il comando "stampa" nel menu contestuale che si attiva con il tasto destro del mouse. Questo esempio attiva la stampa di tutti i file contenuti in una determinata directory. Notare che la descrizione della cartella non termina con la barra "\". Usando un metodo della shell di Windows posso attivare il verbo "print" come è registrato per quel tipo di file. TargetFolder = "C:\documenti\temp" L'esempio attiva in automatico quello che è descritto nel paragrafo seguente. Funziona come se si scegliesse "stampa" dal menu contestuale, quindi per alcuni tipi di file potrebbe mostrare una finestra di opzioni da confermare (es: file html), mentre per altri documenti potrebbe stampare in automatico la pagina (es: txt) senza necessità di intervento dell'utente.
Analogamente al comando per stampare chiamando Word, si possono stampare altri tipi di file con i programmi installati sul proprio PC. Quando si clicca su di un file con il tasto destro, appare un menu contestuale che prevede, tra le altre opzioni, anche la stampa. Con l'Esplora Risorse è possibile vedere cosa si attiva scegliendo questo comando. Dal menu strumenti scegliere "Opzioni Cartella". Scegliere la scheda Tipi di File. Scorrere l'elenco fino a trovare il tipo di file che interessa e cliccare su "Avanzate". Scegliere il comando di stampa e premere "modifica". Ricopiare il comando che appare. Questo comando può essere invocato per stampare quel tipo di file, avendo l'accortezza di sostituire "%1" con il pathname del file da stampare. Ecco alcuni esempi. Per stampare file pdf. Questo esempio presuppone che abbiate installato la versione 5 di Acrobat Reader. "C:\Programmi\Adobe\Acrobat 5.0\Reader\AcroRd32.exe" /p /h "%1" Dato che il pathname contiene degli spazi, bisogna racchiuderlo tra virgolette. Ecco come: Apici=chr(34) Comando=apici & "C:\programmi\Adobe\Acrobat 5.0\....."& apici &" /p /h" & FileDaStampare.pdf wshell.run Comando,1,true Per le immagini che possono essere aperte con kodak imaging, se lo avete incluso nell'installazione di Windows, il comando è C:\WINDOWS\kodakprv.exe /p "%1" Con il Photo Editor, se lo avete installato con Office: "C:\Programmi\File comuni\Microsoft Shared\PhotoEd\PHOTOED.EXE" /p "%1" E ovviamente, con la procedura che ho descritto, potete stampare numerosi altri tipi di file. Cenati Giovanni
|
||
© Cenati Giovanni 2004/2010 - http://digilander.libero.it/Cenati - Reventlov at Katamail com
|