Differenze tra le versioni di "Individuare le stampanti presenti nel proprio sistema"
Riga 55: | Riga 55: | ||
Dim fl As File | Dim fl As File | ||
Dim s As String | Dim s As String | ||
− | Dim | + | Dim ss As New String[] |
fl = Open "/etc/printcap" For Input | fl = Open "/etc/printcap" For Input | ||
Riga 61: | Riga 61: | ||
While Not Eof(fl) | While Not Eof(fl) | ||
Input #fl, s | Input #fl, s | ||
− | + | ss.Add(Trim(s)) | |
− | If | + | If ss.Max = 23 Then Print "La stampante predefinita è: "; Split(ss1[23], "|")[0] |
Wend | Wend | ||
Versione delle 11:55, 11 feb 2013
Se si vogliono individuare le stampanti riconosciute e presenti nel proprio sistema, è possibile interrogare i file, creati per ciascuna di esse, nella cartella: /etc/cups/ppd/ |1|. Ciascuno di tali file riporta il nome della stampante, alla quale si riferisce, nonché l'estensione .ppd. Pertanto, il compito è quello di prendere il solo nome del file, che corrisponde anche alla singola stampante, escludendo l'estensione.
Potremo dunque utilizzare questo semplice codice:
Public Sub Button1_Click() Dim stampante As String For Each stampante In Dir("/etc/cups/ppd/", "*.ppd").Sort() Print File.BaseName(stampante) Next End
Conoscere la stampante impostata come predefinita
Se si desidera conoscere la stampante impostata come predefinita (default), potremo utilizzare quest'altro codice (si dovrà attivare il componente gb.desktop; e si dovrà aver installato nel proprio sistema l'applicazione xterm):
Public Sub Button1_Click() Dim fl As File Dim s As String Dim ss As New String[] Dim j As Byte ' E' necessario avere il pieno accesso alla lettura del seguente file: Desktop.RunAsRoot("chmod 4777 /etc/cups/printers.conf.O ") ' Resta in attesa fino a che i permessi del file in questione non saranno cambiati: Do Wait 0.01 Loop Until Stat("/etc/cups/printers.conf.O").Auth = "rwsrwxrwx" fl = Open "/etc/cups/printers.conf.O" For Input While Not Eof(fl) Input #fl, s ' Carichiamo nell'array di tipo stringa tutte le informazioni, ' suddivise parola per parola, presenti nel file: ss.Add(Trim(s)) If ss.Max > 0 Then ' Individuaiamo la stampante predefinita e ne mostriamo il nome in console: If ss[ss.Max - 1] = "<DefaultPrinter" Then Print "La stampante predefinita è: "; Replace(ss[ss.Max], ">", "") Endif Wend End
Si potrà utilizzare anche quest'altro codice |1|, più breve, che non necessita di inserire alcuna password:
Public Sub Button1_Click() Dim fl As File Dim s As String Dim ss As New String[] fl = Open "/etc/printcap" For Input While Not Eof(fl) Input #fl, s ss.Add(Trim(s)) If ss.Max = 23 Then Print "La stampante predefinita è: "; Split(ss1[23], "|")[0] Wend End
Note
[1] Testato su Ubuntu.