PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → WX - Trabalhando com Registro do Windows, ter a Lista de Impressoras e a Impressora Padrão do Windows (Working with the Windows Registry with the Printer List, and the Windows Default Printer)
WX - Trabalhando com Registro do Windows, ter a Lista de Impressoras e a Impressora Padrão do Windows (Working with the Windows Registry with the Printer List, and the Windows Default Printer)
Iniciado por adrianoboller, abr., 30 2016 2:25 AM - 14 respostas
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em abril, 30 2016 - 2:25 AM
Prezados,

Passei a esses dias estudando essa questão de como trabalhar com Registro do Windows e obter a Lista de Impressoras e qual é a Impressora Padrão do Windows.

Segue aqui as minhas conclusões:





Código:

ResExist3 is boolean = RegistryExist("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers")

IF ResExist3 = True THEN

Key is string = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers"

Key = RegistryFirstSubKey(Key)
EDT_Impressoras = Replace(Key,"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\","") + CR
Achou is string = ""
LOOP (1000)
Achou = RegistryNextKey ( Key )
IF Achou <> "" THEN
EDT_Impressoras += Replace(Achou,"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\","") + CR
Key = Achou
ELSE
BREAK
END
END

END



Obtendo assim a listagem das impressoras

CutePDF Writer
Fax
Microsoft Print to PDF
Microsoft XPS Document Writer
Send To OneNote 2016


Simples Assim!

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em abril, 30 2016 - 6:54 PM
Como Saber a Impressora Padrão?

iInfoPrinter FUNCTION

http://doc.windev.com/en-US/…

Recupera as características da impressora atual ou padrão.

//PEGA A IMPRESSORA PADRAO DO WINDOWS

sCurrentPrinter is string = iInfoPrinter() //Impressora Atual

sDefaultPrinter is string = iInfoPrinter(False) // Impressora Padrao do Painel de Controle

sDriverUsadoImpressoraPadrao is string = iInfoPrinter(False,iDriverName) //"winspool"

sNomeImpressoraPadrao is string = iInfoPrinter(False,iPrinterName) //"LX300"

sPortaImpressoraPadrao is string = iInfoPrinter(False,iDeviceName) //"LPT1:"

sListaTodasImpressorasInstaladas is string = iListPrinter() //LX300 CR HP1200 CR FAX CR CutePDF


//IMPORTANTE:

ok_situacao_01 is boolean = iConfigure("HP1200", False) // Mudar para a HP1200

IF ok_situacao_01 = True
Info("Impressora foi alterada com sucesso no painel de controle")
ELSE
Info(ErrorInfo())
END

// OU

ok_situacao_02 is boolean = iConfigure("HP1200", True) // Mudar para a HP1200

IF ok_situacao_02 = True
Info("Impressora foi alterada com sucesso somente enquanto tiver usando o aplicativo windev")
ELSE
Info(ErrorInfo())
END




--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/
Mensagem modificada, abril, 30 2016 - 7:19 PM
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em abril, 30 2016 - 8:16 PM
Prezados,

Eu fiz hoje junto com o "José Jorge Matos" fazer algo que eu tinha no Clarion, uma das funções do Template Mágico kkkkk

Seria a inversão entre a impressora padrão e a impressora que quero usar via código.

Quero agradecer de público pela força que me deu em conseguir fazer esse código.

Que tenho a certeza que será útil para toda a comunidade.


COMPLEMENTO

http://doc.windev.com/en-US/…

http://doc.windev.com/en-US/…

http://doc.windev.com/en-US/…


A ideia consiste em ter 4 impressoras ou mais...

E a necessidade seria alternar entre as impressoras livres

via código, e alterar a impressora padrão do Windows

O post estou ainda concluído, mas foi um trabalho de 4 dias...

Até conseguir fazer funcionar, vasculhei a API do Windows, Registro do Windows, Códigos C#, .Net e até o Clarion...

E por incrível que pareça achei no help online usando código nativo da ferramenta.

Ou seja, uma pesquisa que no final acabei usando os comando nativos, não imaginava que já tinha isso pronto

Só que não estava tudo junto como eu precisava.

Ou seja, muita leitura do Help!

Vale a pena... antes de correr para outros lugares e outras técnicas...

Segue assim a dica:

Se esta pensando em fazer milhões de linhas no Windev

Esta indo pelo caminho errado!

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/
Mensagem modificada, abril, 30 2016 - 8:29 PM
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em abril, 30 2016 - 8:46 PM
Prezados

Vou explicar a necessidade desse código

Digamos que temos esse cenário:





//PEGA A IMPRESSORA PADRAO DO WINDOWS

sCurrentPrinter is string = iInfoPrinter() //Impressora Atual

sDefaultPrinter is string = iInfoPrinter(False) // Impressora Padrao do Painel de Controle

sDriverUsadoImpressoraPadrao is string = iInfoPrinter(False,iDriverName) //"winspool"

sNomeImpressoraPadrao is string = iInfoPrinter(False,iPrinterName) //"HP Color Laserjet 1600"

sPortaImpressoraPadrao is string = iInfoPrinter(False,iDeviceName) //"LPT1:"

sListaTodasImpressorasInstaladas is string = iListPrinter() //LX300 CR HP Color Laserjet 1600 CR FAX CR CutePDF Write


//Alterar para CutePDF Write

ok_situacao_01 is boolean = iConfigure("CutePDF Write", False) // Mudar para a CutePDF Write

IF ok_situacao_01 = True
Info("Impressora foi alterada com sucesso no painel de controle")
ELSE
Info(ErrorInfo())
END






Gera o PDF e depois volta para a impressora HP Color Laserjet 1600

ok_situacao_01 is boolean = iConfigure("HP Color Laserjet 1600", False) // Mudar para a HP Color Laserjet 1600

IF ok_situacao_01 = True
Info("Impressora foi alterada com sucesso no painel de controle")
ELSE
Info(ErrorInfo())
END







Assim tem absoluta certeza qual impressora/dispositivo será usada pela sua aplicação e assim você vai ter o relatório impresso ou pdf gerado com sucesso e total controle via código.

Estarei complementando esse post com novidades sobre o assunto.

Qualquer dúvida entre em contato.

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/
Mensagem modificada, abril, 30 2016 - 8:53 PM
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em abril, 30 2016 - 9:18 PM
Prezados

Caso agora você queira ter antes de imprimir mudar totalmente as configurações de tamanho de papel se vai ou não ser colorida a impressão existe também um comando muito interessante que esta presente na versão 20/21:





Escolhendo a opção WIZARD do droplist vai aparecer essa tela:





Próxima tela:





Próxima tela:





Próxima tela:





Próxima tela:





Próxima tela:





Próxima tela:





Próxima tela:





Próxima tela:






Com a ajuda do wizard do comando iParameter o Windev entrega certo o seu código para ser usado em sua aplicação:

//OUTRAS CONFIGURAÇÕES

// Don't save the specified parameters
iParameter(iPrinterDefault, False)
//Paper Orientation
iParameter(iOrientation, iOrientation_Portrait)
//Paper source (tray)
iParameter(iPaperSource, "15")
//Duplex
iParameter(iDuplex, iDuplex_Simple)
//Quality of print
iParameter(iYResolution, 600)
//Printing TrueType fonts
iParameter(iTrueType, iTrueType_Subdev)
//Number of copies to print
iParameter(iCopies, 1)
//Color or B&W
iParameter(iColor, iColor_Mono)
//Preset Paper Size
iParameter(iPaperSize, iPaperSize_A4)


Parece Mágica...
Mas é pura tecnologia!... rssss....

:-)

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/
Mensagem modificada, abril, 30 2016 - 9:22 PM
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em abril, 30 2016 - 11:44 PM
Prezados,

Sobre o registro do Windows:

HKEY_LOCAL_MACHINE
Config
0001
System
CurrentControlSet
Control
Print
Printers


Para ler:

//DADOS DO REGISTRO DO WINDOWS DE UMA IMPRESSORA

Impressora is string = ""
Name is string = ""
Port is string = ""
sPrinterDriver is string = ""
printMediaReady is string = ""
printMediaSupported is string = ""
printOrientationsSupported is string = ""
serverName is string = ""
shortServerName is string = ""
uNCName is string = ""

Raiz is string = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers"

ResExist is boolean = RegistryExist(Raiz)

IF ResExist = True THEN

Key is string = Raiz

Key = RegistryFirstSubKey(Key)

Impressora = Key

Name = RegistryQueryValue(Key,"Name",True) //cute

Port = RegistryQueryValue(Key,"Port",True) //cpw2:

Key = RegistryFirstSubKey(Key)

printMediaReady = RegistryQueryValue(Key,"printMediaReady",True) //A4

printMediaSupported = RegistryQueryValue(Key,"printMediaSupported",True) //a3, a4...

printOrientationsSupported = RegistryQueryValue(Key,"printOrientationsSupported",True) //p/l

Key = Impressora+"\DsSpooler"

serverName = RegistryQueryValue(Key,"serverName",True) //dell-adriano

shortServerName = RegistryQueryValue(Key,"shortServerName",True) //dell-adriano

uNCName = RegistryQueryValue(Key,"uNCName",True) // rede: \\dell-adriano\impressora


EDT_Impressoras += Name +" - "+ Port +" - "+ printMediaReady +" - "+ printMediaSupported +" - "+ serverName +" - "+ shortServerName +" - "+ uNCName +" - "+ printOrientationsSupported
END


:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em maio, 01 2016 - 12:14 AM
Prezados,

Para saber se tem algo sendo impresso:

//VERIFICA SE JA ESTA SENDO IMPRESSO
ReportList is string = iListNestedReports()

Info(ReportList)

IF ExtractString(ReportList, 1) = "RPT_ReportQuery_CONTABIL" THEN
Info( "JÁ ESTA SENDO IMPRESSO O RPT_QueryReport_CONTABIL NESTA IMPRESSORA" )
END


Retorna a lista de relatórios aninhados atualmente impresso (relatórios executado por iPrintReport em um dos processos do relatório que está impresso).

Nota : Esta função é usada para descobrir o nome dos diferentes relatórios impressos originários do relatório que está impresso (chamados relatórios aninhados).

E para saber o status da impressora use o comando: iReportPrintingStatus

http://help.windev.com/en-US/…

Retorna o status da impressão atual.

Esta função deve ser utilizado no código de fecho do relatório.

Com as constantes:

-2 impressão cancelada
0 impressão em andamento (impressora ocupada)
1 sem dados para imprimir

// End of print
SWITCH iReportPrintingStatus()
CASE -2: Trace("Print canceled")
CASE 0: Trace("Print in progress")
CASE 1: Trace("Empty report: no data to print")
END


OUTROS LINKS COMPLEMENTARES:

http://help.windev.com/en-US/…

http://help.windev.com/en-US/…

http://help.windev.com/en-US/…

http://help.windev.com/en-US/…

http://help.windev.com/en-US/…

http://help.windev.com/en-US/…

http://help.windev.com/en-US/…

http://help.windev.com/en-US/…

http://help.windev.com/en-US/…

http://help.windev.com/en-US/…

BONS ESTUDOS!

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em maio, 02 2016 - 10:49 PM
Prezados,

O comando correto seria:

ireportprintigstatus

Retorna o status da impressão atual.

Esta função deve ser utilizado no código de fecho do relatório.

Se a função retornar 0, algo está sendo impresso na impressora ,isso é para a current printer (impressora atual)

http://help.windev.com/en-US/…

// End of print
SWITCH iReportPrintingStatus()
CASE -2: Trace("Print canceled")
CASE 0: Trace("Print in progress")
CASE 1: Trace("Empty report: no data to print")
END


Obrigado Pedrosão e Mello pela dica.

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em maio, 02 2016 - 10:56 PM
PREZADOS,

IMPRESSAO EM IMPRESSORA MATRICIAL

iPrint (Função) = LINEPRINT DO CLARION (DICA DO PEDROSAO)

Envia a cadeia de caracteres passada em parâmetro para o buffer de impressão.

Uma quebra de linha é automaticamente inserido no fim da cadeia: o cursor estiver posicionado na linha seguinte. A mudança para a próxima linha leva em conta a altura da linha atual (em relação à fonte utilizada). A impressão não é iniciado (somente iEndPrinting pode ser usado para iniciar a impressão).

notas :

Para imprimir uma cadeia de caracteres sem ir para a próxima linha, use iPrintWord .
iPrint não deve ser usado no código de um relatório sobre a abertura.
Esta função está agora disponível em Universal Windows 10 modo de App.

Exemplo

iPrint ( iFont ( 2 ) + "Texto em fonte 2" )
iSkipPage ( )
// nome do cliente na primeira linha a 50 mm de distância das fronteiras
iPrint ( iXPos ( 50 ) + Cu . CustName )
iEndPrinting ( )



OU

// Relatório Manual
s_texto mais string = "--------------------------------" + CR
s_texto + = "Dados do Banco "+ CR
s_texto + =" AGENCIA: ____________ "+ CR
s_texto + =" CONTA NUEMRO: ____________ "+ CR
s_texto + =" Convenção: ____________ "+ CR
s_texto + =" carteira: _____________ "+ CR
s_texto + =" ------- ---------------------------------- "+ CR
s_texto + =" dados da empresa "+ CR
s_texto + =" CNPJ : _______________ "+ CR
s_texto + =" raça social: ____________________________ "+ CR
s_texto + =" NOME CONTATO: _____________ _____________ "+ CR
s_texto + =" TELEFNE CONTATO: _____________ _____________ "+ CR
s_texto + =" EMAIL CONTATO: _____________ _____________ "+ CR
s_texto + = "-----------------------------------------" + CR
s_texto + = "GERENTE responsavel BANCO "+ CR
s_texto + =" NOME GERENTE: _______________ "+ CR
s_texto + =" telefone: ____________________ "+ CR
s_texto + =" EMAIL HOMOGACAO: ____________________ "+ CR
s_texto + =" SITE HOMOLOGACAO: ____________________ "+ CR
iPreview (ipvZoom100)
iPrint (iFont (1) + s_texto)
iEndPrinting ()
//CONFORME EXEMPLO DO AMARILDO


Sintaxe

<Result> = iPrint (<texto para Imprimir> [, <string na Próxima Página>])


<Resultado>: booleana

Verdadeiro se a impressão foi realizada,
False se a impressão foi cancelada.

<Texto para Imprimir>: Sequência de caracteres (com aspas)

cadeia de caracteres para imprimir, bem como suas características. Este parâmetro tem o seguinte formato:
[<Identificador de fonte> +] [<Posição Vertical> +] [<Horizontal Posição> +] <Text1>
...
[<font Identificador> +] [<Posição Vertical> +] [<Horizontal Posição> +] <TextN >

Onde:

<Font Identificador>:. Inteiro opcional
identificador da fonte usada para imprimir o texto. Este identificador é retornado por IFont . Se este parâmetro não for especificado, a última fonte usada será selecionada.
<Vertical Position>:. Inteiro opcional
Y coordenadas do ponto onde a impressão deve ser realizada. Esta posição é especificada no número de linhas a partir da borda superior esquerdo da folha (com iYPos ). Se este parâmetro não for especificado, o texto será impresso na posição atual.
<Posição Horizontal>:. Inteiro opcional
coordenada X do ponto onde a impressão deve ser realizada. Esta posição é especificado em número de colunas a partir da borda superior esquerdo da folha (com iXPos ). Se este parâmetro não for especificado, o texto será impresso na posição atual.
<Text>:. Sequência de caracteres com aspas
cadeia de caracteres a imprimir.

Exemplo:
Text_to_print = "primeira parte" + iFont ( 1 ) + "segunda parte"


<String na Próxima Página>: boolean Opcional

Especifica se o texto impresso no final da página deve ser truncado ou se deve continuar ao longo da próxima página:

Verdadeiro (valor padrão): o texto será impresso na página seguinte, se ele não se encaixa em uma única página.
Falso : a cadeia de caracteres é truncada: o resto da cadeia não é impresso na página seguinte.

Observações

Características da impressão

A origem (0,0) está localizado no canto superior esquerdo da folha. Leva as margens físicas da impressora em conta.
A posição vertical atual ao imprimir um pontos cadeia de caracteres para a parte superior da cadeia. A posição inferior depende da altura das fontes usadas na linha de impressão.
Você pode especificar várias fontes e várias posições como parâmetros em uma única chamada para iPrint . Por exemplo:

iPrint ( iXPos ( 50 ) + CU . LASTNAME + iXPos ( 150 ) + CU . FIRSTNAME )


O personagem que corresponde a uma quebra de linha (Char (10)) é interpretado como uma linha de pular.

combinando fontes
Resultados inesperados podem ocorrer quando se combina fontes. Por exemplo, o seguinte código:

iFont ( 2 )
iPrint ( "primeira parte" + iFont ( 1 ) + "Segunda Parte" )


não é equivalente a:

iPrint ( iFont ( 2 ) + "Primeira Parte" + iFont ( 1 ) + "Segunda Parte" )


No primeiro caso, toda a cadeia de caracteres é impresso em fonte 1. Com efeito, neste caso, IFont (1) é executado quando a construção da cadeia para imprimir e, portanto, antes da string "Primeira Parte" é impresso.

Para obter um resultado idêntico, tudo que você tem a fazer é usar IFont com o falso parâmetro: IFont (1, False) será realmente executado durante a impressão.

combinando posições
Ao combinar posições, podem ocorrer resultados inesperados. Por exemplo, o seguinte código:

iXPos ( 50 )
iPrint ( "primeira parte" + iPrint ( 30 ) + "Segunda Parte" )


não é equivalente a:

iPrint ( iXPos ( 50 ) + "primeira parte" + iXPos ( 30 ) + "segunda parte" )


No primeiro caso, toda a cadeia de caracteres é impressa na posição horizontal 30. Com efeito, neste caso, iXPos (30) é executado quando a construção da cadeia para imprimir e, portanto, antes da string "Primeira Parte" é impresso.

Para obter um resultado idêntico, tudo que você tem a fazer é usar iXPos com o falso parâmetro: iXPos (30, False) será realmente executado durante a impressão.

A mesma operação pode ser executada por iYPos .

Android Widget Java

Impressão em Java e Android A impressão pode ser menos precisa, porque a resolução de impressão está definido para 72 pontos por polegada (dpi), mesmo que a impressora suporta resoluções mais altas.

Consequência : Os cálculos de pontos em imagens e em desenhos (linhas, por exemplo) são arredondados durante os cálculos de posição durante a impressão, especialmente para valores pequenos. Durante a impressão, os cálculos são executados no ponto (de acordo com a resolução de impressão) em vez de mm (ou cm).

Exemplo: Impressão linhas : Se o espaçamento entre as linhas é ajustado para 0,5 mm, quantos pontos vai ser encontrado entre cada linha (resolução ajustada a 72 ppp)?

A primeira linha é posicionado a 0,5 mm o que significa (0,5 / 25,4) polegadas com uma resolução de 72 pontos por polegada (ppp): (0,5 / 25,4) x 72 = 1,42 ponto. O ponto sendo a unidade de base, que não pode ser dividida: o resultado é automaticamente arredondado para um ponto inferior ou superior de acordo com o caso.

Esta é uma sucessão de linhas impressas com um espaçamento definido para 05 milímetros:

0,5 mm -> (1,42) 1 ponto
1.0 mm -> (2,84) 3 pontos
1,5 mm -> (4.25) 4 pontos. Atenção: a linha encontrada em 1,5 mm é preso à linha encontrada em 1 mm (sem espaçamento entre essas duas linhas)
2,0 mm (5,67 ->) 6 pontos
2,5 mm -> (7,09) 7 pontos. Atenção: a linha encontrada em 2,5 mm é preso à linha encontrada em 2 mm (sem espaçamento entre essas duas linhas)
3,0 mm -> (8,50) 9 pontos
3,5 mm -> (9,92) 10 pontos. Atenção: a linha encontrada em 3,5 mm é preso à linha encontrada em 3 mm (sem espaçamento entre essas duas linhas)
4,0 mm -> (11.33) 11 pontos. Atenção: a linha encontrada em 4 mm é preso à linha encontrada em 3,5 mm (sem espaçamento entre essas duas linhas)
etc.

Para obter uma representação exacta (sem arredondamento) , o tamanho e / ou a posição em mm para uma resolução ajustada a 72 ppp deve ser um múltiplo de 127/360.

1 ponto -> (1/72) polegadas -> (1/72) x 25,4 mm = 127/360 = 0.3527778 mm

Muito obrigado Pedroso, Mello e Amarildo.

BONS ESTUDOS

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, maio, 02 2016 - 11:11 PM
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em maio, 02 2016 - 11:09 PM
COMANDOS CHR DE IMPRESSAO MATRICIAL

CONDENSADO: chr(27)&chr(15)
CONDENSADO: CHR(15)
DESLIGA CONDENSADO: chr(8)
Normal: CHR(18)&CHR(27)&CHR(107)&CHR(0)
COMPRIMIDA: CHR(15)&CHR(27)&CHR(107)&CHR(0)
EXPANDIDO: chr(27)&chr(14)
DESLIGA EXPANDIDO: chr(20)
NEGRITO: chr(27)&chr(69)
DESLIGAR NEGRITO: chr(27)&chr(70)
ITALICO: chr(27)&chr(52)
DESLIGAR ITALICO: chr(27)&chr(53)
MUDAR DE PÁGINA: CHR(012)


Canon BJ-200 = Citizen 200 GX = Emília PC = Rima 180/220
Imprimir Normal CHR(18)
Imprimir Comprimido CHR(27)+CHR(15)
Imprimir Super Comprimido CHR(30)+'5'


Deskjet HP 500C
Imprimir Normal CHR(27)+CHR(40)+CHR(115)+"8"+CHR(72)+CHR(27)+CHR(38)+
CHR(108)+"5"+CHR(68)+CHR(27)+CHR(38)+CHR(108)+"66"+CHR(80)
Imprimir Comprimido CHR(27)+CHR(40)+CHR(115)+"16.67"+CHR(72)+CHR(27)+
CHR(38)+CHR(108)+"8"+CHR(68)+CHR(27)+CHR(38)+CHR(108)+"90"+CHR(80)
Imprimir Super Comprimido CHR(27)+CHR(40)+CHR(115)+"23"+CHR(72)+CHR(27)+CHR(38)+
CHR(108)+"10"+CHR(68)+CHR(27)+CHR(38)+CHR(108)+"90"+CHR(80)


Epson FX/MX/LQ = Epson 2000
Imprimir Normal CHR(18)
Imprimir Comprimido CHR(27)+CHR(15)
Imprimir Super Comprimido CHR(15)+CHR(27)+'M'


Epson Stylus (Esc/P2)
Imprimir Normal CHR(18)
Imprimir Comprimido CHR(27)+CHR(15)
Imprimir Super Comprimido CHR(27)+CHR(15)+""+CHR(27)+CHR(77)


ExecJet - Lexmark
Imprimir Normal CHR(27)+CHR(38)+CHR(107)+CHR(52)+CHR(83)+CHR(27)+CHR(38)+
CHR(108)+"5"+CHR(68)+CHR(27)+CHR(38)+CHR(108)+"66"+CHR(80)
Imprimir Comprimido CHR(27)+CHR(38)+CHR(107)+CHR(50)+CHR(83)+CHR(27)+CHR(38)+
CHR(108)+"8"+CHR(68)+CHR(27)+CHR(38)+CHR(108)+"90"+CHR(80)
Imprimir Super Comprimido CHR(27)+CHR(40)+CHR(115)+"23"+CHR(72)+CHR(27)+CHR(38)+CHR(108)+
"10"+CHR(68)+CHR(27)+CHR(38)+CHR(108)+"90"+CHR(80)


Deskjet HP = Laserjet II = Laserjet III
Imprimir Normal CHR(27)+CHR(40)+CHR(115)+"8"+CHR(72)
Imprimir Comprimido CHR(27)+CHR(40)+CHR(115)+"16.67"+CHR(72)
Imprimir Super Comprimido CHR(27)+CHR(40)+CHR(115)+"23"+CHR(72)


oBS.: Comandos Especiais - Matricial Epson Compatível - Quase todos os comandos!

O valor de n é a soma dos valores correspondentes ao
efeito da combinação desejada, os valores que você deve
somar para obter o efeito combo são os seguintes:
10 cpi = 0
12 cpi = 1
Condensado = 4
Negrito = 8
Duplo-passe = 16
Tamanho duplo = 32
Itálico = 64
Sublinhado = 128


Espaçamento de linha
1/8" CHR(27)+"0"
7/72" CHR(27)+"1"
1/6" CHR(27)+"2"
n/216" CHR(27)+"3"+n
n/72" CHR(27)+"A"+n


Tamanho dos Caracteres
10 cpi CHR(27)+"P"
12 cpi CHR(27)+"M"


Ativar Condensado CHR(27)+CHR(15)
Desativar Condensado CHR(18)
Tamanho Duplo (uma linha) CHR(27)+CHR(14)
Cancelar Tamanho Duplo (uma linha) CHR(20)
Ativar tamanho Duplo CHR(27)+"W"+"1"
Destivar tamanho Duplo CHR(27)+"W"+"0"


Melhoramento de Impressão
Ativar Negrito CHR(27)+"E"
Desativar Negrito CHR(27)+"F"
Ativar passada dupla CHR(27)+"G"
Desativar passada dupla CHR(27)+"H"
Ativar Sobre-Escrito CHR(27)+CHR(83)+"0"
Ativar Sub-Escrito CHR(27)+CHR(83)+"1"
Desativar Sobre/Sub-Escrito CHR(27)+"T"
Ativar Itálico CHR(27)+"4"
Desativar Itálico CHR(27)+"5"
Ativar sublinhado CHR(27)+CHR(45)+"1"
Desativar sublinhado CHR(27)+CHR(45)+"0"
Sobreposição dos estilos de impressão
Impressão em Draft (+rápida) CHR(27)+"x0"
Impressão em NLQ (+Trabalhada) CHR(27)+"x1"
Seleciona a fonte Roman (Só NLQ) CHR(27)+"k0"
Seleciona a fonte Sans Serif (Só NLQ) CHR(27)+"k1"
Seleção Master (combo) CHR(27)+CHR(33)+"n"


Estamos enviando a lista dos principais comandos tipo ESC/P2 para serem utilizando com as impressoras Epson.

Usando o sumário de comandos

Sua impressora utiliza a linguagem de controle ESC/P (Epson Standard Code for Printers) e comandos de emulação IBM.
As seções seguintes listam e descrevem todos os comandos disponíveis nos modos ESC/P e emulação IBM e estão catalogados por tópicos.
Se um comando possuir parâmetros, esses são detalhados. Os parâmetros são indicados por letras minúsculas, usualmente 'n'.

Abaixo temos alguns exemplos:
ESC @ é um comando sem parâmetros.
ESC U 1/O é um comando que usa 1 para ativar a função e 0 para desativa-la.
ESC $ n1 n2 é um comando com dois parâmetros
ESC D nn é um comando com um número variável de parâmetros.



Comandos ESC/P arranjados por tópicos

Operação da impressora
ASCII Dec. Hex. Descrição
ESC @ 64 40 Inicializa a impressora
DC1 17 11 Seleciona a impressora
DC3 19 13 Deseleciona a impressora
ESC s 1/0 115 73 Ativa/cancela o modo Half Speed
ESC < 60 3C Seleciona o modo Unidirecional (uma linha)
ESC U 1/0 85 55 Ativa/Cancela o modo Unidirecional
ESC 8 56 38 Desabilita a detecção DO fim DO papel
ESC 9 57 39 Habilita a detecção DO fim DO papel
ESC = 61 3D Ativa MSB para 0
ESC > 62 3E Ativa MSB para 1
ESC # 35 23 Cancela o controle MSB
BEL 7 07 Impressora emite um apito


Controle de dados
ASCII Dec. Hex. Descrição
CR 13 0D Retorno DO carro
CAN 24 18 Cancela a linha
DEL 127 7F Apaga o caractères


Movimentação vertical
ASCII Dec. Hex. Descrição
FF 12 0C Alimentação de página
ESC C n 67 43 Define o comprimento da página em linhas
n= número de linhas (1 a 127)
ESC C 0 n 67 43 Define o comprimento da página em polegadas
n=número de polegadas (1 a 22)
ESC N n 78 4E Define o salto sobre o picotado n=número de linhas
(1 a 127)
ESC O 79 4F Cancela o salto sobre o picotado
LF 10 OA Alimentação de linha
ESC 0 48 30 Seleciona espaçamento de linha de 1/8 polegada
ESC 1 49 31 Seleciona espaçamento de linha de 7/72 polegada
ESC 2 50 32 Seleciona espaçamento de linha de 1/6 polegada
ESC 3 n 51 33 Seleciona espaçamento de linha de n/216 polegada
(n=0 a 255)
ESC A n 65 41 Seleciona espaçamento de linha de n/72 polegada
(n = 0-85)
ESC J n 74 4A Executa alimentação de linha n/216 polegada n=0-255
VT 11 0B Executa tabulação vertical

ESC B nn 66 42 Define tabulação vertical até 16 tabs (1-255)
na ordem crescente; o último parâmetro dever é 0.
ESC B 0 limpa todas as tabulações definidas.
ESC / c 47 2F Seleciona o canal de tabulação vertical c=canal (0-7)


Movimentação horizontal
ASCII Dec. Hex. Descrição
ESC 1 n 108 6C Define a margem esquerda n=coluna da margem esquerda
ESC Q n 81 51 Define a margem direita n=coluna da margem direita
BS 8 08 Retrocesso DO carro
ESC $ n1n2 36 24 Define a posição horizontal absoluta de impressão
n=(n1 + n2 x 256)/60 polegadas
n: especifica a posição de impressão como n/60
polegadas da margem esquerda.
ESC \ n1n2 92 5C Define a posição horizontal relativa de impressão
n=(n1 + n2 x 256)/120 polegadas.
n: Move a posição atual de impressão por n/120
polegadas. Se a movimentação for para a esquerda,
subtraia de 65536.
HT 9 09 Tabulação horizontal
ESC D nn 68 44 Define a tabulação horizontal até 32 tabs (1-255)
na ordem crescente; o último parâmetro deve é 0.
ESC D limpa todas tabulações anteriormente definidas.



Estilos de impressão
ASCII Dec. Hex. Descrição
ESC x n 120 78 Seleciona o modo Near Letter Quality OU Draft
n=0: modo Draft
1: modo Near Letter Quality (NLQ)
ESC k n 107 6B Seleciona família de fontes
n=0: Roman
1: Sans serif
ESC ! n 33 21 Master Select
Para achar o valor de n, adicione os números de
tipos/estilos que se deseja combinar.
n= 0: 10 pitch 4:17 pitch
1: 12 pitch 5: 20 pitch
2: proporcional
4: condensado
8: enfatizado ESC g: 15 pitch
16: batida dupla
32: largura dupla
64: itálico
128: sublinhado


Tamanho e densidade do caractere
ASCII Dec. Hex. Descrição
ESC P 80 50 Seleciona 10 cpp
ESC M 77 4D Seleciona 12 cpp
ESC p 1/0 112 70 Ativa/Cancela modo proporcional
SI 15 0F Seleciona o modo condensado
ESC SI 15 0F Seleciona o modo condensado
DC2 18 12 Cancela mo modo condensado
SO 14 0E Seleciona o modo largura dupla (uma linha)
ESC SO 14 0E Seleciona o modo largura dupla (uma linha)
DC4 20 14 Cancela o modo largura dupla (uma linha)
ESC W 1/0 87 57 Ativa/Cancela o modo largura dupla
ESC w 1/0 119 77 Ativa/Cancela o modo altura dupla



Impressão realçada
ASCII Dec. Hex. Descrição
ESC E 69 45 Seleciona o modo enfatizado
ESC F 70 46 Cancela o modo enfatizado
ESC G 71 47 Seleciona o modo batida dupla
ESC H 72 48 Cancela o modo batida dupla
ESC S 0 83 53 Seleciona o modo Sobrescrito
ESC S 1 83 53 Seleciona o modo Subescrito
ESC T 84 54 Cancela o modo Sobrescrito/subescrito
ESC 4 52 34 Seleciona o modo itálico
ESC 5 53 35 Cancela o modo itálico
ESC - 1/0 45 2D Ativa/Cancela o modo sublinhado


Processamento de textos
ASCII Dec. Hex. Descrição
ESC a n 97 61 Seleciona justificação
n= 0: à esquerda
1: centro
2: à direita
3: total
ESC SP n 32 20 Seleciona o espaço entre caractère
n= 1/120 polegada (0-127) somado No lado direito
de cada caractère

Tabelas de caractères
ASCII Dec. Hex. Descrição
[code:wl]
ESC t n 116 74 Seleciona a tabela de caractères
Seleciona a tabela de caractères n definida por ESC ( t
n = 0, 1, 48 OU 49
ESC R n 82 52 Seleciona uma tabela de caractères internacional
n = 0: EUA 7: Espanha 1
1: França 8: Japão
2: Alemanha 9: Noruega
3: Reino Unido 10: Dinamarca II
4: Dinamarca I 11: Espanha II
5: Suécia 12: América Latina
6: Itália
ESC 6 54 36 Habilita caractères imprimíveis
Habilita a impressão dos códigos decimais de 128
a 159 como caractères
ESC 7 55 37 Habilita os códigos de controle superiores Cancela com ESC 6
ESC ( t nn 40 116 28 74 Define a tabela de caractères
ESC (t 3 0 d1 d2 d3 define tabela de caractères
com d2 e d3 para tabela registrada por ESC t
d1=0: Define a tabela selecionada por ESC t 0
d1=1: Define a tabela selecionada por ESC t 1
d2 d3 Tabela de caractère
0 0 itálica
1 0 PC 437 (EUA)
1 16 PC 437 (GRÉCIA)*
3 0 PC 850 (MULTILINGUAL)
4 0 PC 851 (GRÉCIA)*
5 0 PC 853 (TURQUIA)*
6 0 PC 855 (CIRÍLICO)*
7 0 PC 860 (PORTUGUÊS)
8 0 PC 863 (CANADÁ-FRANÇA)
9 0 PC 865 (NORUEGA)
10 0 PC 852 (LESTE EUROPEU)
11 0 PC 857 (TURQUIA)*
14 0 PC 866 (RÚSSIA)*
15 0 PC 869 (GRÉCIA)*
16 0 USSR GOST*
24 0 PC 861 (ISLÂNDIA)*
25 0 BRASCII (BRASIL)**
26 0 ABICOMP (BRASIL)**


* Essas tabelas de caracteres estão disponíveis somente para Europa.
** Essas tabelas de caracteres estão disponíveis somente para Norte/Sul América.

Caracteres definidos pelo usuário
ASCII Dec. Hex. Descrição
ESC & nn 38 26 caractères definidos pelo usuário
ESC & 0 n1 n2 a1 Data
n1=código ASCII para o primeiro caractère
n2=código ASCII para o segundo caractère
a1=byte de atributo que especifica a largura DO
caractère e a os pinos à serem utilizados.
Data:bytes de dados
ESC : 0 n 0 58 3A Cópia da ROM para RAM
n = 0: Roman
1: Sans Serif
ESC % n 37 25 Seleciona conjunto definido pelo usuário
n = 0: Normal
n = 1: Definido pelo usuário
ESC I n 73 49 Expansão da área de códigos imprimíveis
códigos decimais de 0 a 31 e 128 a 159
n = 0: esses códigos não são impressos
1: imprime códigos de controle como Caract.


Seleção de Cores de Impressão (texto)
ASCII Dec. Hex. Descrição
ESC r n 114 72 Seleciona a cor da impressão de acordo com a tabela abaixo:
n Cor
0 Preto
1 Magenta
2 Ciano
3 Violeta
4 Amarelo
5 Vermelho
6 Verde


80 Colunas - 10 Cpi chr(27)+chr(33)+chr(0)
96 Colunas - 12 Cpi chr(27)+chr(33)+chr(1)
136 Colunas - 17 Cpi chr(27)+chr(33)+chr(4)
160 Colunas - 20 Cpi chr(27)+chr(33)+chr(5)


[ESC] 0 27 48 1/8" line spacing
[ESC] 1 27 49 7/9" line spacing
[ESC] 2 27 50 1/6" line spacing
[ESC] 3 n 27 51 n n/216" line spacing
[ESC] A n 27 65 n n/72" line spacing
[ESC] T n 27 84 n n/216" line feed
[ESC] C n 27 67 n Page Length (n = No. of lines)
[ESC] C 0 n 27 67 48 n Page Length (n = No. of inches)
[ESC] N n 27 78 n Perforation skip (n = No. of lines)
[ESC] 0 27 48 Cancel peforation skip
[ESC] D n n n n 27 68 Set TAB stops to n n n n
[ESC] B n n n n 27 66 Set vertical TAB stops to n n n n
[ESC] Q n 27 81 n Set Right margin
[ESC] l n 27 108 n Set Left margin
[BEL] 7 Sound bell
[B 8 Backspace
[HT] 9 Horizontal TAB
[LF] 10 Line Feed
[VT] 11 Vertical TAB
[FF] 12 Form Feed (new page)
[CR] 13 Carriage RETURN
[DC1] 17 Printer Enable
[DC3] 19 Printer Disable
[CAN] 24 Cancel last line
[DEL] 127 Delete last character
[ESC] < 27 60 Home Print head
[ESC] U 1 27 85 49 Undirectional printing on
[ESC] U 0 27 85 48 Undirectional printing off
[ESC] s 1 27 115 49 Half speed printing on
[ESC] s 1 27 114 48 Half speed printing off
[ESC] 8 27 56 Ignore paper empty
[ESC] 9 27 57 Cancel ignore paper empty
[ESC] K n1 n2 27 75 n1 n2 Single density graphics No. of Data = n2 * 256 + n1
[ESC] L n1 n2 27 76 n1 n2 Double density graphics No. of Data = n2 * 256 + n1
[ESC] Y n1 n2 27 89 n1 n2 Double speed, Double density graphics.
[ESC] Z n1 n2 27 90 n1 n2 Quad density graphics
[ESC] * m n1 n2 27 42 m n1 n2 8 dot graphics modes, m = mode
[ESC] ? n m 27 63 n m Change graphics mode n to work as m. n is K, L, Y, OR Z
[ESC] & 0 n m a p1 ... p11 27 38 48 n m a p1 ... p11 Redefine character. p1..p11 = character data. a = attribute, n+m characters to change.



From a DOS batch file you can often send codes to a printer using ECHO commands which have been entered using EDIT. This could be to a local printer or captured to a network printer, eg:

ECHO ~x1~M > LPT1: to put the printer into NLQ elite pitch.

where ~ is the [ESC] character which in edit can be entered with Control P then Control [ and shows as an arrow pointing to the left.

Note in Windows 2000 and XP the & symbol is used to run two or more commands from the same command line therefore if an & symbol is required you need to add a ^ before it to pass the & symbol directly rather than Windows interpreting it. Another alternative is to add the codes to a text file using EDIT then sending the text file to the printer with a line such as:

COPY textfile.txt LPT1:
or COPY textfile.txt \\server\share
or TYPE textfile.txt > LPT1:
or PRINT textfile.txt
or NPRINT textfile.txt (for Novell systems)

From a simple DOS based BASIC such as Quick Basic 4.5 (QB45) you can send codes in a number of ways. The easiest is to assign some codes to variables and use those in print # or lprint statements to the printer port. You use the chr$() function to send unprintable codes such as Escape and Form Feed or those difficult to enter such as the double quote " which is chr$(34) i.e.:

esc$=CHR$(27)
boldon$=esc$+"E"
boldoff$=esc$+"F"
formfeed$=chr$(12)

filenum=FREEFILE
OPEN "lpt1:" FOR OUTPUT AS filenum
PRINT #filenum, boldon$ + "This is in bold" + boldoff$
CLOSE #filenum

LPRINT boldon$ + "This is in bold" + boldoff$

[ESC] is ascii 27, Control [. Enter in EDIT using Control P, Control [.


Oct Dec Hex Control-key Control Action
NUL 0 0 0 ^@ Null character
SOH 1 1 1 ^A Start of heading, = console interrupt
STX 2 2 2 ^B Start of text, maintenance mode on HP console
ETX 3 3 3 ^C END of text
EOT 4 4 4 ^D END of transmission, not the same as ETB
ENQ 5 5 5 ^E Enquiry, goes with ACK; old HP flow control
ACK 6 6 6 ^F Acknowledge, clears ENQ logon hang
BEL 7 7 7 ^G Bell, rings the bell
BS 10 8 8 ^H Backspace, works on HP terminals/computers
HT 11 9 9 ^I Horizontal TAB, Move to next TAB STOP
LF 12 10 a ^J Line Feed
VT 13 11 b ^K Vertical TAB
FF 14 12 c ^L Form Feed, page eject
CR 15 13 d ^M Carriage RETURN
SO 16 14 e ^N Shift Out, alternate character set
SI 17 15 f ^O Shift IN, resume Default character set
DLE 20 16 10 ^P Data Link escape
DC1 21 17 11 ^Q XON, with XOFF to pause listings; &quot;okay to send&quot;
DC2 22 18 12 ^R Device control 2, block-mode flow control
DC3 23 19 13 ^S XOFF, with XON is TERM=18 flow control
DC4 24 20 14 ^T Device control 4
NAK 25 21 15 ^U Negative acknowledge
SYN 26 22 16 ^V Synchronous idle
ETB 27 23 17 ^W END transmission block, not the same as EOT
CAN 30 24 18 ^X Cancel line, MPE echoes !!!
EM 31 25 19 ^Y END of medium, Control-Y interrupt
SUB 32 26 1a ^Z Substitute
ESC 33 27 1b ^[ Escape, next character is not echoed
FS 34 28 1c ^\ File separator
GS 35 29 1d ^] Group separator
RS 36 30 1e ^^ Record separator, block-mode terminator
US 37 31 1f ^_ Unit separator


Printing Characters
Char Octal Dec Hex Description
SP 40 32 20 Space
! 41 33 21 Exclamation mark
" 42 34 22 Quotation mark (&quot; in HTML)
# 43 35 23 Cross hatch (number sign)
$ 44 36 24 Dollar sign
% 45 37 25 Percent sign
& 46 38 26 Ampersand
' 47 39 27 Closing single quote (apostrophe)
( 50 40 28 Opening parentheses
) 51 41 29 Closing parentheses
* 52 42 2a Asterisk (star, multiply)
+ 53 43 2b Plus
, 54 44 2c Comma
- 55 45 2d Hypen, dash, minus
. 56 46 2e Period
/ 57 47 2f Slant (forward slash, divide)
0 60 48 30 Zero
1 61 49 31 One
2 62 50 32 Two
3 63 51 33 Three
4 64 52 34 Four
5 65 53 35 Five
6 66 54 36 Six
7 67 55 37 Seven
8 70 56 38 Eight
9 71 57 39 Nine
: 72 58 3a Colon
; 73 59 3b Semicolon
< 74 60 3c Less than sign (&lt; in HTML)
= 75 61 3d Equals sign
76 62 3e Greater than sign (&gt; in HTML)
? 77 63 3f Question mark
@ 100 64 40 At-sign
A 101 65 41 Uppercase A
B 102 66 42 Uppercase B
C 103 67 43 Uppercase C
D 104 68 44 Uppercase D
E 105 69 45 Uppercase E
F 106 70 46 Uppercase F
G 107 71 47 Uppercase G
H 110 72 48 Uppercase H
I 111 73 49 Uppercase I
J 112 74 4a Uppercase J
K 113 75 4b Uppercase K
L 114 76 4c Uppercase L
M 115 77 4d Uppercase M
N 116 78 4e Uppercase N
O 117 79 4f Uppercase O
P 120 80 50 Uppercase P
Q 121 81 51 Uppercase Q
R 122 82 52 Uppercase R
S 123 83 53 Uppercase S
T 124 84 54 Uppercase T
U 125 85 55 Uppercase U
V 126 86 56 Uppercase V
W 127 87 57 Uppercase W
X 130 88 58 Uppercase X
Y 131 89 59 Uppercase Y
Z 132 90 5a Uppercase Z
[ 133 91 5b Opening square bracket
\ 134 92 5c Reverse slant (Backslash)
] 135 93 5d Closing square bracket
^ 136 94 5e Caret (Circumflex)
_ 137 95 5f Underscore
` 140 96 60 Opening single quote
a 141 97 61 Lowercase a
b 142 98 62 Lowercase b
c 143 99 63 Lowercase c
d 144 100 64 Lowercase d
e 145 101 65 Lowercase e
f 146 102 66 Lowercase f
g 147 103 67 Lowercase g
h 150 104 68 Lowercase h
i 151 105 69 Lowercase i
j 152 106 6a Lowercase j
k 153 107 6b Lowercase k
l 154 108 6c Lowercase l
m 155 109 6d Lowercase m
n 156 110 6e Lowercase n
o 157 111 6f Lowercase o
p 160 112 70 Lowercase p
q 161 113 71 Lowercase q
r 162 114 72 Lowercase r
s 163 115 73 Lowercase s
t 164 116 74 Lowercase t
u 165 117 75 Lowercase u
v 166 118 76 Lowercase v
w 167 119 77 Lowercase w
x 170 120 78 Lowercase x
y 171 121 79 Lowercase y
z 172 122 7a Lowercase z
{ 173 123 7b Opening curly brace
174 124 7c Vertical line

} 175 125 7d Closing curly brace
~ 176 126 7e Tilde (approximate)
DEL 177 127 7f Delete (rubout), cross-hatch box


Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, maio, 02 2016 - 11:25 PM
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em maio, 03 2016 - 9:01 PM
DEBATE SOBRE O ASSUNTO:

http://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/54665-api-winspool-drv-statut-imprimante/read.awp

Si l'utilisation de dotnet n'est pas un obstacle voici une autre méthode pour récupérer des infos imprimante avec Windev :
En utilisant WMI avec assemblage DotNet
Pour utiliser cela dans votre projet il vous faut :
1 - Utiliser l'assemblage .NET "System.Management" :
Menu Atelier/.NET/Utiliser Un Assemblage .NET dans ce projet
Dans la fenêtre qui s'ouvre cliquer sur "Lister les assemblages référencés"
Quand la recherche est terminée cocher "Mscorlib" et "System.Management"
2 - Récupérer la collection de procédure pWMI.wdg qui se trouve dans l'exemple complet WD WMI DOTNET et l'inclure dans votre projet
Rajouter la procédure suivante dans votre collection pWMI.wdg

// Syntaxe :
//[ <Résultat> = ] RécupèreInfoImprimante ()
//
// Ecrit par Jurassic Pork le 20/05/2010
// Cette procédure permet de récupérer les infos d'Etat sur les imprimantes
// Paramètres :
// Aucun
// Valeur de retour :
// chaîne : Nom de l'imprimante + RC + Status de l'imprimante + RC + mode de connexion de l'imprimante

Procedure RécupèreInfoImprimante()

sChaineRetour est une chaîne
sListeInfo est une chaîne
sUneInformation est une chaîne

// Récupération de toutes les informations sur les imprimantes
sListeInfo = RécupèreContenu("win32_Printer",gsServeur + "root\CIMV2")

POUR TOUTE CHAINE sUneInformation DE sListeInfo SEPAREE PAR RC+RC

// Récupération des informations
sChaineRetour += "Imprimante : " + TrouveInformation(sUneInformation,"Caption") + RC +...
// Récupération du status
// Valeur Signification
// 1 (0x1) Other
// 2 (0x2) Unknown
// 3 (0x3) Idle
// 4 (0x4) Printing
// 5 (0x5) Warming Up
// 6 (0x6) Stopped printing
// 7 (0x7) Offline
// Attention cette info peut être fausse si WorkOffLine = 1 ( mode Hors connexion)
"Status : " + TrouveInformation(sUneInformation,"PrinterStatus") + RC +...
// Récupération du mode Hors connexion = 1 Connecté = 0
"WorkOffLine : " + TrouveInformation(sUneInformation,"WorkOffLine") + RC +...
"=====================================================" + RC
FIN

RENVOYER sChaineRetour


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, maio, 03 2016 - 9:08 PM
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em maio, 04 2016 - 7:31 PM
Prezado,

Para pegar a lista de impressoras e colocar em uma combo:

sPrinterList is string
sPrinterList = iListPrinter()
ListAdd(COMBO_BARprn,sPrinterList)


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em maio, 06 2016 - 3:41 AM
Prezados,

No repositório da Pcsoft encontrei esse material qui que foi postado nesse link:

http://depot.pcsoft.fr/resource.awp…

SpoolPrinter

Publicado por dotNuts

O componente SpoolPrinter permite-lhe gerir o spool a impressora desejada. Ele também oferece a capacidade de adicionar nova impressora, ou para excluir. Você também tem a opção para conhecer a impressora padrão ou conjunto, ou se ela está pronta. Usando em seu projeto Windev.

http://depot.pcsoft.fr/download.awp…

Sendo recursos importantes e podendo abrir novas oportunidades de negócios.

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em novembro, 05 2019 - 2:16 AM
// GET AND SET THE PRINTER STANDARD WINDOWS
*********************************************************************
sCurrentPrinter is string = iInfoPrinter() //Impressora Atual

sDefaultPrinter is string = iInfoPrinter(False) // Impressora Padrao do Painel de Controle

sDriverUsadoImpressoraPadrao is string = iInfoPrinter(False,iDriverName) //"winspool"

sNomeImpressoraPadrao is string = iInfoPrinter(False,iPrinterName) //"LX300"

sPortaImpressoraPadrao is string = iInfoPrinter(False,iDeviceName) //"LPT1:"

sListaTodasImpressorasInstaladas is string = iListPrinter() //LX300 CR HP1200 CR FAX CR CutePDF

//IMPORTANTE:

ok_situacao_01 is boolean = iConfigure("HP1200", False) // Mudar para a HP1200

IF ok_situacao_01 = True

Info("Impressora foi alterada com sucesso no painel de controle")

Info("Printer has been successfully changed on the control panel")

ELSE
Info(ErrorInfo())
END

// OU

ok_situacao_02 is boolean = iConfigure("HP1200", True) // Mudar para a HP1200

IF ok_situacao_02 = True

Info("Impressora foi alterada com sucesso somente enquanto tiver usando o aplicativo windev")

Info("Printer has been successfully changed only while you are using the WINDEV application")

ELSE
Info(ErrorInfo())
END


--
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, 05 2019 - 2:18 AM
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em novembro, 15 2021 - 8:51 PM
Fica do Yves

https://stackoverflow.com/questions/41775357/finding-if-printer-is-online-and-ready-to-print

Descobrir se está on ou off a impressora

Muito obrigado

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/