WAPI v1.05 - Funções da API do Windows

Fórum sobre ferramentas de apoio à programação (Clipper/[x]Harbour)

Moderador: Moderadores

Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Se você não utiliza Windows 98, apenas ignore o erro e gere o executável normalmente (BLINKER EXECUTABLE NODELETE). Caso contrário, inclua a OSLib no seu script.
Coloquei esse comando no meu SCRIPT e não resolveu ......

O sistema compila com o erro mas esta danda problema ainda quando uso o SETAPPTITLE("SISTEMA DO LEO") !!!

Aguardo um Retorno...Abraços !!!

[]'s
Maligno
http://www.buzinello.com/prg[/quote]
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Coloquei esse comando no meu SCRIPT e não resolveu ......
Leu o novo README (parágrafo DEPENDÊNCIAS)?
Incluiu a LIB OSLib e CPMI? As duas são necessárias.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Blz....Maligno.....Baixei e dei uma lida e agora fungo......Abraços e desculpa tah charopeando.....

Clip-Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinhos

"..isto aqui ta muito bom, isto aqui ta bom demais..."

Minha contribuição:

Código: Selecionar todos

   PrinterSetup()
   PRNcPort   := PrnGetName()
   PRNcFile    := "notafisc.txt"
   PRNcSTAT := IsPrint(PRNcPort)
   FErase( PRNcFile )
   if PRNcSTAT = "Impressora OK"
      WaitRun( "notafisc.exe "+strzero(PN->IDPEDIDO), 7 )
      if file( PRNcFile )
         WaitRun( [WAPI -PRINT:"]+PRNcPort+[";]+PRNcFile+[;"Impressao";RESULTA.TXT], 7 )
      endif
   else
      MsgStop( "Impressora nao conectada" )
   endif
O codigo postado esta sendo usado em um aplicativo Fivewin e com exito fez o que outros exemplos não fizeram. Meu aplicativo executa um pequeno .EXE com a definição de uma nota fiscal de um cliente especifico( nota totalmente fora de padrões ) e gera a saida em .TXT com 156 colunas.

Usando comandos como COPY /B, NOTEPAD arquivo e outros estava obtendo falhas estranhas.

Vim acompanhando o tópico abaixo e pude fazer um teste com o famoso WAPI. As outras funções fazem parte do Fivewin e Harbour.

IsPrint.PRG

Código: Selecionar todos

function IsPrint( QuePrinter )
   LOCAL nStatus
   DEFAULT QuePrinter := "LPT1:"
   nStatus := PrnStatus( QuePrinter )
   if     nStatus <        1 ; return "Impressora OK"
   elseif nStatus =        1 ; return "Impressora Pausada"
   elseif nStatus =        2 ; return "Impressora com Erro"
   elseif nStatus =        4 ; return "Impressora Deletando"
   elseif nStatus =        8 ; return "Impressora em Modo Bandeja"
   elseif nStatus =       16 ; return "Impressora Sem Papel"
   elseif nStatus =       32 ; return "Impressora em Modo Manual"
   elseif nStatus =       64 ; return "Impressora com Problema no Papel"
   elseif nStatus =      128 ; return "Impressora OffLine"
   elseif nStatus =      256 ; return "Impressora com IO Ativo"
   elseif nStatus =      512 ; return "Impressora Ocupada"
   elseif nStatus =     1024 ; return "Impressora Imprimindo"
   elseif nStatus =     2048 ; return "Impressora Memoria Lotada"
   elseif nStatus =     4096 ; return "Impressora Nao Instalada"
   elseif nStatus =     8192 ; return "Impressora Aguardando"
   elseif nStatus =    16384 ; return "Impressora Processando"
   elseif nStatus =    32768 ; return "Impressora Inicializando"
   elseif nStatus =    65536 ; return "Impressora em Atencao"
   elseif nStatus =   131072 ; return "Impressora Toner Baixo"
   elseif nStatus =   262144 ; return "Impressora Sem Toner"
   elseif nStatus =   524288 ; return "Impressora PAGE_PUNT"
   elseif nStatus =  1048576 ; return "Impressora Intervencao do Usuario"
   elseif nStatus =  2097152 ; return "Impressora Sem Memoria"
   elseif nStatus =  4194304 ; return "Impressora Tampa Aberta"
   elseif nStatus =  8388608 ; return "Impressora Servidor Desconhecido"
   elseif nStatus = 16777217 ; return "Impressora POWER_SAVE"
   endif
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

WAPI.LIB

Mensagem por Pablo César »

Caro colega Maligno,

Voltando ao assunto sobre:
SyGeCom escreveu:existe alguma possibilidade de imprimir em modo CONDENSADO pela WAPI.LIB ???
Maligno escreveu:Tecnicamente sim. Mas eu não quero vincular o WAPI ao código de nenhuma impressora. Senão acabaria virando gambiarra. O melhor seria fazer uma LIB à parte, para abstração dos comandos de impressão. Nada difícil.
Lí um tópico do colega JMARCELO sobre como imprimir em impressoras USB em condensado. E o colega Wagner Nunes, explicou que o PRWIN dele transforma dentro de um arquivo gerado com comandos EPSON e que converte os comandos para a impressora instalada no WINDOWS seja USB HP3220, o que for (feito em xHarbour ???). Explica pro colega que: "não adianta tentar, estas impressoras não tem fontes padrão na memória o que impossibilita a impressão de programas MS-DOS...".

Eu acredito que é assim mesmo.´Só não entendí em tópico anterior você disse: "Não. Você precisa de documentação.", isso quando eu perguntei a você:
Pablo escreveu:gostaria de te perguntar MALIGNO, se no WINDOWS (creiria através das DLLs) que acompanha cada impressora, se te como saber quais seriam os comandos para fazer por exemplo: condensado, enfatizado, expandido. Tem como ?
Será que seria possível fazer uma nova função para converter a impressão ?

sds/Pablo *-)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: WAPI.LIB

Mensagem por Maligno »

Confirmo: você precisa conhecer a documentação (os códigos de impressão) a respeito de cada impressora para adaptar seu relatório corretamente. O que o programa do Wagner faz, como ele mesmo disse, é converter os comandos padrão da Epson embutidos no seu relatório, para que estes se adaptem à impressora selecionada para imprimir. É uma abordagem válida, embora eu não goste dela. Se você tiver, como eu disse antes, uma boa biblioteca que lhe permita atender às características de cada impressora (abstração), você consegue fazer isso no seu próprio programa, com a vantagem de poder adaptá-la a uma possível necessidade especial, sem ficar travado pela abordagem feita por um programa externo. Realmente não vejo necessidade de incluir essa conversão no WAPI, pois essa tarefa pode ser melhor feita fora dele. A boa notícia é que é uma coisa simples de fazer. Se for bem feita, fica ótimo.
"não adianta tentar, estas impressoras não tem fontes padrão na memória o que impossibilita a impressão de programas MS-DOS...".
Não entendi o que você quis dizer com esta frase. Ela não faz sentido, pois ela trata de duas coisas bem distintas. Toda impressora tem fontes internas, armazenadas no BIOS. E isso nada tem a ver com o fato dela imprimir ou não em DOS. O que dita essa limitação é apenas e tão somente a interface de comunicação, desde que o software acompanhe essa limitação. Ou seja, mesmo USB, existindo um driver feito especialmente para isso, o DOS imprimiria normalmente por essa interface. Isso não existe (que eu saiba) não por uma limitação técnica, mas por uma (in)conveniência comercial. Nenhum fabricante tem interesse em DOS.

[]'s
Maligno
http://www.buzinello.com/prg


PS: Se não me falha a memória, e respondendo à sua pergunta, o Wagner comentou, em certa ocasião, que fez o PRWin em Delphi.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Maligno, Qual seria as chance de vc fazer uma caridade para todos desse forum e desenvolver essa tal LIB de (abstração de características de impressoras) para todos aqui no forum passar a usar no bom e velho clipper....não quero ser chato....mas toh sendo cara-de-pau eu sei......mas quero que saiba q adimiro muito o que jah fez por esse forum......e que caso vc esteja se sentindo prejudicado de alguma certa forma..eu me disponho a pagar pelo desenvolvimento dessa LIB...

Grande Abraço...... -:] :xau
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

sygecom escreveu:Maligno, Qual seria as chance de vc fazer uma caridade para todos desse forum e desenvolver essa tal LIB
Chance zero. :)
Não é por uma questão de pagamento pelos serviços. É por falta de tempo mesmo. Mas se serve de consolo, estou fazendo um sub-sistema de impressão com esse esquema de abstração (o cliente já está pagando bem pra isso). Não é nada completo porque é pra um cliente só (meu último programa Clipper - assim espero) e ele usa apenas HP (deskjet/laser) e Epson LX. Até funcionava bem com outro esquema que eu tinha, mas o infeliz comprou algumas impressoras HP/PCL e eu não pude ampliar a coisa do jeito que precisava. Ficou mais barato refazer.
Portanto, como é coisa simples, vou contemplar apenas os códigos realmente necessários para atender as minhas necessidades. Mas nada impede que esse esquema possa ser ampliado e/ou adaptado posteriormente. Estou fazendo de forma que fique bem fácil dar manutenção. Já previ, inclusive, supressão total dos códigos, para o caso de se montar um preview, que é outra coisa que estou desenvolvendo.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Mas se serve de consolo, estou fazendo um sub-sistema de impressão com esse esquema de abstração (o cliente já está pagando bem pra isso). Não é nada completo porque é pra um cliente só (meu último programa Clipper - assim espero) e ele usa apenas HP (deskjet/laser) e Epson LX.
Maligno,Não sei se entendi direito....vc esta desenvolvendo um sub-sistema de impressão...apenas pra (deskjet/laser) e Epson LX.....minha duvida é a seguinte esse seu sub-sistema de impressão faz impressão condensada nas impressoras citadas acima ? se sim qual a possibilidade de vc compartilhar essa ferramenta aqui no forum? ou ainda incluir essa ferramenta na WAPI.LIB ?

Obs:Conforme vc mesmo disse o ideal seria fazer uma LIB a parte somente para essa função....mas pensei comigo....como só vai ter para essas duas impressora mesmo não custa nd colocar....usa quem quer.....Toh certo ou toh errado ??

Abraços......
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Maligno,Não sei se entendi direito....vc esta desenvolvendo um sub-sistema de impressão...apenas pra (deskjet/laser) e Epson LX.....minha duvida é a seguinte esse seu sub-sistema de impressão faz impressão condensada nas impressoras citadas acima ?
Só estou incluindo os códigos para essas duas impressoras. Se for o caso, amanhã ou depois poderão ser incluídos os códigos de quaisquer impressoras.
Aliás, apenas para informar corretamente: estou incluindo os códigos de PCL e ESCP; HPs e EPSONs (matriciais de impacto), respectivamente.
se sim qual a possibilidade de vc compartilhar essa ferramenta aqui no forum? ou ainda incluir essa ferramenta na WAPI.LIB ?
Assim que estiver pronto posso compartilhar. Mas não vou incluir no WAPI. Será uma LIB à parte. O WAPI tem uma destinação totalmente focada em Windows. Não gosto de misturar as coisas. :)
Obs:Conforme vc mesmo disse o ideal seria fazer uma LIB a parte somente para essa função....mas pensei comigo....como só vai ter para essas duas impressora mesmo não custa nd colocar....usa quem quer.....Toh certo ou toh errado ??
Certo. :)

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Assim que estiver pronto posso compartilhar. Mas não vou incluir no WAPI. Será uma LIB à parte. O WAPI tem uma destinação totalmente focada em Windows. Não gosto de misturar as coisas.
Blz.....Ficamos no aguardo dessa nova LIB.....e mais uma vez o forum só tem a agradecer......


Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: WAPI.LIB

Mensagem por Maligno »

Eu tinha dito escreveu:Não é no WIN95 que estou testando... é no WIN98 como eu disse:
Perdão, mencionei é no WIN98 sendo que eu devia ter dito é no WINXP, desculpe tou ficando louco com a versão do WINDOWS. Mas acredite, a questão toda é no meu WINXP talvez, mas eu estou com antivirus (tou limpo) não sei se isso acontece com outro colega, seria bom alguém mais opinar em outro XP.
Conseguiu resolver essa questão? Ou continua informando Windows 95 ao invés de XP?

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

WAPI.LIB

Mensagem por Pablo César »

No WINXP (versão: 5.1.2600) no arquivo gerado, continua dando SEMPRE o mesmo resultado: 9X,Windows 95,,4.0.950 com a função -GETWINDOWSINFO. Os colegas não deram alguma opinião sobre algum caso. Seria desinteresse ou não estaria ocorrendo o mesmo com eles ?. (Vou abrir um novo tópico para debater esta questão).

Não sei se você chegou a alterar algo mas, pelo ultimo WAPI que você disponibilizou aqui no FORUM, ainda continuam essas pendências. E inclusive queria também sugerir, que ora na linha de comando (sem parâmetros) o WAPI.EXE ou ora seja também através de uma função, que pudesse saber a versão do próprio WAPI.

Como eu disse anteriormente, ficam pendentes:

-GETWINDOWSINFO -> Em WINDOWS XP (versão: 5.1.2600)
-PRINT -> Rótulo de impressão em WIN98
-Uma função que detecte se o sistema atual está sendo executado no modo TEXTO ou JANELADO.
-Função para ver a versão do proprio WAPI
-Velocidade de execução do WAPI no WIN98

Também gostaria de retornar a este assunto:
Maligno escreveu:Toda impressora tem fontes internas, armazenadas no BIOS. E isso nada tem a ver com o fato dela imprimir ou não em DOS.
Sei disto, porém gostaria de saber se haveria algum jeito de extrair esta informação (comandos de impressão) ?. Porque todos nós sabemos que como impressoras LEXMARK e essas novas impressoras que tem no mercado, não tem suporte para conseguir este tipo de "documentação".

Um clip-abraço :xau [/quote]
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: WAPI.LIB

Mensagem por Maligno »

-PRINT -> Rótulo de impressão em WIN98
O que tem de errado com a impressão de Windows 98?
-Velocidade de execução do WAPI no WIN98
Continua muito lento?
Maligno escreveu:Toda impressora tem fontes internas, armazenadas no BIOS. E isso nada tem a ver com o fato dela imprimir ou não em DOS.
Sei disto, porém gostaria de saber se haveria algum jeito de extrair esta informação (comandos de impressão) ?
Não dos drivers de impressão. Muito menos da própria impressora. Só por meio da documentação do fabricante.
Não confunda fontes (Arial, Letter Ghotic, etc) com códigos de impressão (configuração, formatação, etc). São coisas totalmente diferentes.
Porque todos nós sabemos que como impressoras LEXMARK e essas novas impressoras que tem no mercado, não tem suporte para conseguir este tipo de "documentação".
É sempre possível conseguir isso pela Internet. O Google taí pra isso. :)
Tive problema com os códigos PCL, conforme comentei em outra thread. Mas resolvi e já está funcionando conforme o planejado. Pra qualquer outra marca o caminho é o mesmo.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Em tempo: com relação à visualização da versão corrente do WAPI, não vejo realmente muita necessidade. Se você utilizar as funções de abstração, ao invés do WAPI diretamente, não terá problema. Além do que, é só acompanhar a versão pela documentação, ou mesmo pela data dos arquivos.

[]'s
Maligno
http://www.buzinello.com/prg
Responder