Non mi sembra di aver mai incontrato una specifica funzione Gambas che ritorni le stampanti presenti nel proprio sistema.
Ad ogni modo, ho posto questa domanda nella Mailing List Internazionale.
Nel frattempo, mi permetto sommessamente di segnalare :-X un'alternativa (testata con Ubuntu), utilizzando le sole funzioni di Gambas, senza Shell, come da te richiesto:
Public Sub Button1_Click()
Dim stampante As String
For Each stampante In Dir("/etc/cups/ppd/", "*.ppd").Sort()
Print File.BaseName(stampante)
Next
End
per sapere qual'è la stampante predefinita impostata?
Dovrebbe :-X andare bene questo:
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(ss[23], "|")[0]
Wend
End
Ho avuto una risposta da Minisini:
« This is something missing. But it can be implemented in gb.qt4 and
gb.gtk (the needed API exists in both toolkits).
Regards,
--
Benoît Minisini »
...ed infatti ora è possibile conoscere direttamente cpon la Classe Printer sia le stampanti installate nel nostro sistema, sia la stampante predefinita,
Esempio:
Public Sub Form_Open()
Dim stampanti As String
Print "Le stampanti installate sono:"
For Each stampanti In Printer.List
Print stampanti
Next
Print "\nLa stampante predefinita è:"
Print Printer.Default
End