Verifica ed eliminazione dei processi di stampa mediante le funzioni del API di CUPS
Da Gambas-it.org - Wikipedia.
Versione del 15 set 2023 alle 02:39 di Vuott (Discussione | contributi)
Le funzioni del API di CUPS (Common Unix Printing System) consentono fra l'altro di verificare quanti siano i processi di stampa in atto, pendenti o in coda, nonché quelli arrestati, cancellati, rifiutati o completati.
Consentono inoltre di eliminare il processo di stampa in atto, o anche tutti i processi di stampa indipendentemente dal loro stato.
Per utilizzare le risors di CUPS bisognerà richiamare l'attuale libreria esterna: libcups.so.2
Mostriamo un semplice esempio:
Library "libcups:2" ' CUPS_WHICHJOBS_ALL returns all jobs regardless of state; ' CUPS_WHICHJOBS_ACTIVE returns jobs that are pending, processing, or held; ' CUPS_WHICHJOBS_COMPLETED returns jobs that are stopped, canceled, aborted, or completed: Private Enum CUPS_WHICHJOBS_ALL = -1, CUPS_WHICHJOBS_ACTIVE, CUPS_WHICHJOBS_COMPLETED ' CUPS_JOBID_ALL to cancel all jobs or CUPS_JOBID_CURRENT to cancel the current job on the named destination: Private Enum CUPS_JOBID_ALL = -1, CUPS_JOBID_CURRENT Private Const CUPS_HTTP_DEFAULT As Integer = 0 ' int cupsGetJobs (cups_job_t **jobs, const char *name, int myjobs, int whichjobs) ' Get the jobs from the default server. Private Extern cupsGetJobs(jobs As Pointer, name As String, myjobs As Integer, whichjobs As Integer) As Integer ' int cupsCancelJob (const char *name, int job_id) ' Cancel a print job on the default server. Private Extern cupsCancelJob(name As String, job_id As Integer) As Integer Public Sub Main() Dim p As Pointer Dim stampante As String Dim stp As Integer ' Per individuare il nome di una stampante installata nel sistema, si rinvia a questa pagina della Wiki. stampante = "stampante utilizzata" ' Verifica quanti sono i processi di stampa in atto, pendenti o in coda: stp = cupsGetJobs(VarPtr(p), Null, 1, CUPS_WHICHJOBS_ACTIVE) Print "I processi di stampa in atto, pendenti o in coda sono: "; stp ' Elimina i processi di stampa. Inserire la costante: ' - CUPS_JOBID_ALL per eliminare tutti i processi di stampa indipendentemente dal loro stato; ' - CUPS_JOBID_CURRENT per eliminare soltanto il processo di stampa corente: cupsCancelJob(stampante, CUPS_JOBID_ALL) ' Dopo l'eliminazione dei processi, verifica quanti sono i processi di stampa completati o bloccati: stp = cupsGetJobs(VarPtr(p), Null, 1, CUPS_WHICHJOBS_COMPLETED) Print "I processi di stampa arrestati, cancellati, rifiutati o completati sono: "; stp End