PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → Função iListPrinter não retorna algumas impressoras remotas
Função iListPrinter não retorna algumas impressoras remotas
Iniciado por Edson Alamino, nov., 01 2019 7:25 PM - 3 respostas
Publicado em novembro, 01 2019 - 7:25 PM
Boa tarde !

Cenário:
Computador A, com Win10, e impressora LB-1000 (etiquetas) devidamente instalada e compartilhada.
Computador B, com Win Server 2008.
Este computador B é o servidor da empresa, e onde eu instalei o servidor de WS. Neste computador B, consigo enxergar a impressora LB-1000 compartilhada pelo computador A, e consigo instalá-la sem problemas.
Uma das rotinas do WS é retornar para o app Android (via iListPrinter), a lista de impressoras instaladas no PC (computador B)
Ocorre que a função não retorna nada !
Ela não consegue "enxergar" a impressora que está instalada neste computador B (que está fisicamente conectada no computador A)
Fiz testes com outros tipos de impressoras e o problema ocorre com umas e não com outras !!!

Julgando ser problema com driver de impressora ou SO bloqueando algum recurso, usei uma função do programa feito em xHarbour (GetPrinters()) e para minha surpresa, ela traz todas as impressoras que não são trazidas pelo iListPrinter (Windev)

Alguém já percebeu algo assim ?
O que fazer ?
Estou com esse abacaxi na mão, e no atual cenário de desenvolvimento dos projetos aqui, parei tudo pois esse é um recurso primordial, haja vista a necessidade de imprimir em impressoras remotas constantemente.
Publicado em novembro, 04 2019 - 10:51 AM
Bom dia

GetPrinters

Tem no windev usando o comando Api
Busque no help api Windows
O windev tem todas as api detalhadas e funcionais
Tenho certeza que isso é bem pontual
Publicado em novembro, 04 2019 - 3:04 PM
Obrigado Ivan !

Sinceramente não encontrei nada a respeito.

Mas fiz algumas descobertas: a função iListPrinter quando chamada num executável Windows, retorna a impressora normalmente. Porém quando chamo a função iListPrinter de dentro de uma rotina de WS, não traz a impressora. Desconfio que seja alguma configuração faltando, ou alguma diretiva de segurança do Windows.

Continuo na busca pela solução.
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em novembro, 06 2019 - 4:32 AM
Solução

https://help.windev.com/en-US/?1011002&name=Report_on_printers_on_Web_server


Imprimindo um relatório sobre uma das impressoras conectadas ao Servidor Web
visão global
Para imprimir um relatório sobre uma das impressoras conectadas ao servidor Web, você deve:
configurar o servidor Web. Esta configuração depende do tipo de impressoras usados ​​(locais ou de rede).
especificar a impressora para uso.
imprimir o relatório.
Nota : Este tipo de impressão é recomendado apenas para os sites de intranet.
Como proceder?
Configurar o servidor Web para as impressoras locais (servidores IIS Web apenas)

Para configurar o servidor Web para as impressoras locais (IIS apenas servidores Web):
No IIS, usar uma conta local (IUSR) para as conexões anônimas. Este IUSR corresponde conta para a conta "guest Internet" e pertence ao grupo "Guest".
Para saber a conta IUSR de servidor Web atual, consulte Como identificar a conta que executa o protocolo de AWP .
Verifique se as impressoras utilizadas por esta conta IUSR tem permissão para imprimir (aba "Segurança" das propriedades da impressora).
Nota : configuração específica Não é necessário para os outros tipos de servidores Web.
Configurar o servidor Web para as impressoras de rede

Para configurar o servidor Web para as impressoras de rede:
Dependendo do tipo de servidor Web utilizado:
Em IIS , use uma conta de domínio para conexões anônimas. Essa conta deve pertencer ao grupo "convidado de domínio".
Para saber a conta de domínio do servidor Web atual, consulte Como identificar a conta de domínio que executa o protocolo de AWP .
Para o Apache , use uma conta do domínio.
Para saber a conta de domínio do servidor Web atual, consulte Como identificar a conta de domínio que executa o protocolo de AWP .
Verifique se a conta de domínio é permitido escrever no registro Regedt32:
Inicie o Regedt32 ( "Start .. Run .. Regedt32" no desktop do Windows).
Selecione "HKEY_LOCAL_MACHINE \ SOFTWARE \ PC SOFT \ Webdev \ 24.0".
Selecione "Segurança .. Direitos". Verifique se a conta de domínio tem os direitos para criar chaves de registro ( "Controle Total").
Verifique se as impressoras podem ser acessados ​​pelo servidor Web.
Verifique se as impressoras usadas pela conta de domínio têm permissão para imprimir (aba "Segurança" das propriedades da impressora).
Selecionando a impressora

Para selecionar a impressora:
usar iConfigure .
Nota : iListPrinter retorna a lista de impressoras locais instaladas no computador atual.
especificar a impressora que será usada por padrão no administrador Webdev (botão "Configurar as impressões", aba "Configuração").
Imprimir o relatório

Para imprimir um relatório, use iPrintReport .
Exemplo
O relatório "RPT_ReportName" deve ser impresso em uma impressora local ou de rede.
Os "LIST_PrinterList" listas de controle de impressoras locais e de rede acessível a partir do servidor Web.
O botão "BTN_PrintReport" é usado para:
configurar a impressora para uso.
imprimir o relatório.
Neste exemplo:
o código de inicialização do controle "LIST_PrinterList" é a seguinte:
// Adicione o impressoras de rede
ListAdd (eu, "\\ Server1 \ HP 750" )
ListAdd (eu, "\\ Server2 \ Canon LBP-1000" )
// Adicione as impressoras locais
ListAdd (eu, iListPrinter ())
o código do servidor clique do botão "BTN_PrintReport" é a seguinte:
// Selecione a impressora utilizada
iConfigure ( LIST_ PrinterList [ LIST_ PrinterList ])
// Imprimir o relatório
iPrintReport ( RPT_ ReportName )
// Se nenhuma impressora for selecionada,
// a impressão será feita na impressora selecionada
// no administrador Webdev



Outro detalhe é poder criar uma porta lpt1 virtual mapeada com:

NET USE LPT1 \\REMASA_ADM\HPL1200

Se nao quiser a tela do ms dos tem como esconder com um exemplo que fiz e coloquei no repository


Hide Screem MS-DOS
https://repository.windev.com/resource.awp?file_id=281474976710850;msdos-hide-prompt-msdos-hide-screen


é importante estar a impressora compartilhada com nome curto e sem acento e espaço e estar visivel no windows pelo windows explorer

\\servidor\impressora

ou só \\servidor

e aparecer tudo o que tem compartilhado, daí só imprimir para a porta virtual mapeada

Lpt1

Copy file.txt Lpt1

Pode usar daí o comando copy podem ser usados para mandar para a impressora um relatorio

Com o exemplo esconde tela do ms dos que tem no repositório da pra fazer muita coisa

Ficando assim bem profissional

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, novembro, 06 2019 - 4:33 AM