Esiste un oggetto (collection) quasi sconosciuto, chiamato "Printers". Tramite questo oggetto si possono interrogare gli stati delle varie stampanti, nomi, porte, formato ecc, e anche impostarli temporaneamente. L'oggetto "Printer", rappresenta la stampante attuale, e l'istruzione
Set Printer = Printers(0)
assegna (ad esempio) la prima stampante della collection stampanti alla stampante locale. Tutte le modifiche a "Printer" sono permanenti, e per renderli temporanei, bisogna salvare le informazioni in delle variabili, fare quello che si vuole fare, e poi ricopiarli. Si può ottenere il hDC dalla common dialog per trovare poi la stampante scelta dall'utente tramite un loop, interrogando Printers(i).hDC.
Per applicare e rendere permanenti le modifiche, bisogna dire
Printer.EndDoc
*senza* aver iniziato di stampare.
Nota che l'oggetto Printer rappresenta la stampante predefinita su tutto il sistema, per cui va ripristinata anche quella. Non so se questo è vero anche per NT/XP (da provare).
Giovanni
---
Ducunt fata volentem, nolentem trahunt