Ir ao conteúdo
  • Cadastre-se

Python Correção do código em Python


Posts recomendados

Bom dia Senhoras e Senhores.

 

Estou tentando criar um codigo para instalar automaticamente uma impressora no computador, informando o IP, porém esta apresentando um erro que ao rodar o codigo informar que "O nome da impressora é invalido" porém não consegui corrigir isso.

 

alguém poderia me ajudar?

 

Erro:

 

pywintypes.error: (1801, 'OpenPrinter', 'O nome da impressora é inválido.')

 

Codigo:

 

import win32print

import win32con

import win32ui

import ipaddress

 

def install_printer(ip_address):

    # Nome da impressora

    printer_name = f"Impressora{ip_address.replace('.', '_')}"

 

    # Abre o manipulador da impressora

    printer_handle = win32print.OpenPrinter(printer_name, {"DesiredAccess": win32print.PRINTER_ALL_ACCESS})

 

    try:

        # Define as informações da impressora

        printer_info = {

            'pPrinterName': printer_name,

            'pPortName': f"IP_{ip_address}",

            'pDriverName': "Generic / Text Only",

            'pPrintProcessor': "WinPrint",

            'pDatatype': "RAW"

        }

       

        PRINTER_INFO_2 = win32print.PRINTER_INFO_2

        pinfo = PRINTER_INFO_2()

       

        # Define as informações da impressora

        for key, value in printer_info.items():

            setattr(pinfo, key, value)

 

        # Instala a impressora

        win32print.SetPrinter(printer_handle, 2, pinfo, 0)

    finally:

        win32print.ClosePrinter(printer_handle)

 

if __name__ == "__main__":

    ip = input("Digite o endereço IP da impressora: ")

 

try:

    ipaddress.ip_address(ip)

    install_printer(ip)

    print(f"Impressora instalada com sucesso!")

except ValueError:

    print("Endereço IP inválido.")

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Rodrigo Lazarotto como você disse "informando o ip", acredito que ela está na rede, correto?

Se sua rede for estática e você já setou ip e máscara na impressora, você já consegue pingar ela na rede, correto?

as formas que achei de fazer isso é usando rundll32 para printui.dll

aqui vai os links:
tutorial do suporte da microsoft

tutorial direto e pouco explicado

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!