Individuare le stampanti presenti nel proprio sistema: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 50: | Riga 50: | ||
Si potrà utilizzare anche quest'altro codice che non necessita di inserire alcuna password: | Si potrà utilizzare anche quest'altro codice |[[#Note|1]]|, più breve, che non necessita di inserire alcuna password: | ||
'''Public''' Sub Button1_Click() | '''Public''' Sub Button1_Click() | ||
Versione delle 12:54, 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 ss1 As New String[]
fl = Open "/etc/printcap" For Input
While Not Eof(fl)
Input #fl, s
ss1.Add(Trim(s))
If ss1.Max = 23 Then Print "La stampante predefinita è: "; Split(ss1[23], "|")[0]
Wend
End
Note
[1] Testato su Ubuntu.