import win32print
import time
import tkinter as tk
from win10toast import ToastNotifier
def verificar_fila_impressao():
todas_impressoras = win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL, None, 1)
toaster = ToastNotifier()
for impressora in todas_impressoras:
nome_impressora = impressora[2] # Acessando o nome da impressora
handle = win32print.OpenPrinter(nome_impressora)
info = win32print.GetPrinter(handle, 2)
# Acessando o número de trabalhos de impressão
qtd_trabalhos = info['cJobs']
if qtd_trabalhos > 0:
mensagem = f"Existem {qtd_trabalhos} trabalhos de impressão na impressora {nome_impressora}"
toaster.show_toast("Fila de Impressão", mensagem, duration=10)
win32print.ClosePrinter(handle)
def limpar_fila_impressao():
todas_impressoras = win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL, None, 1)
for impressora in todas_impressoras:
nome_impressora = impressora[2] # Acessando o nome da impressora
handle = win32print.OpenPrinter(nome_impressora)
# Obtendo informações da impressora padrão
default_printer_info = win32print.GetPrinter(handle, 2)
devmode = default_printer_info['pDevMode']
# Criar um dicionário PRINTER_INFO_2 completo para limpar a fila de impressão
info = {
'pServerName': None,
'pPrinterName': nome_impressora,
'pShareName': '',
'pPortName': '',
'pDriverName': '',
'pComment': '',
'pLocation': '',
'pDevMode': devmode,
'pSepFile': '',
'pPrintProcessor': '',
'pDatatype': '',
'pParameters': '',
'pSecurityDescriptor': None,
'Attributes': 0,
'Priority': 0,
'DefaultPriority': 0,
'StartTime': 0,
'UntilTime': 0,
'Status': 0,
'cJobs': 0,
'AveragePPM': 0
}
# Chamar SetPrinter para limpar a fila de impressão
win32print.SetPrinter(handle, 2, info, 0)
win32print.ClosePrinter(handle)
def atualizar():
verificar_fila_impressao()
atualizar_labels()
root.after(300000, atualizar) # Atualiza a cada 5 minutos (300000 ms)
def atualizar_labels():
todas_impressoras = win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL, None, 1)
for i, impressora in enumerate(todas_impressoras):
nome_impressora = impressora[2] # Acessando o nome da impressora
handle = win32print.OpenPrinter(nome_impressora)
info = win32print.GetPrinter(handle, 2)
qtd_trabalhos = info['cJobs']
labels[i].config(text=f"Impressora: {nome_impressora}, Trabalhos: {qtd_trabalhos}")
win32print.ClosePrinter(handle)
# Criar a janela principal
root = tk.Tk()
root.title("Verificador de Fila de Impressão")
# Adicionar um rótulo
label = tk.Label(root, text="Clique no botão para verificar a fila de impressão")
label.pack(pady=10)
# Adicionar botão de verificação
button_verificar = tk.Button(root, text="Verificar Fila de Impressão", command=verificar_fila_impressao)
button_verificar.pack(pady=5)
# Adicionar botão de limpar fila de impressão
button_limpar = tk.Button(root, text="Limpar Fila de Impressão", command=limpar_fila_impressao)
button_limpar.pack(pady=5)
# Adicionar labels para exibir a quantidade de trabalhos em cada fila
labels = []
todas_impressoras = win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL, None, 1)
for impressora in todas_impressoras:
nome_impressora = impressora[2] # Acessando o nome da impressora
label_impressora = tk.Label(root, text="")
label_impressora.pack()
labels.append(label_impressora)
# Iniciar a verificação automática da fila de impressão
atualizar()
# Iniciar a interface gráfica
root.mainloop()
To embed this project on your website, copy the following code and paste it into your website's HTML: