Clipper On Line • Ver Tópico - WAPI v1.05 - Funções da API do Windows

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

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

Moderador: Moderadores

 

Mensagempor Clipper » 20 Jan 2007 12:22

Gostaria de aproveitar para agradecer e parabenizar o Maligno (leia-se Benigno) pela ótima lib e pelo tempo gasto em ajudar aos colegas !

Valeuuuuuuuuuuuuuuuuuu !!!! :)Pos :{ -:]

Obrigado em nome de todos do fórum !

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar de usuário

Clipper
Colaborador

Colaborador
 
Mensagens: 1320
Data de registro: 23 Ago 2004 00:04
Cidade/Estado: Recife/PE
Curtiu: 0 vez
Mens.Curtidas: 3 vezes

WAPI.LIB

Mensagempor Pablo César » 20 Jan 2007 16:17

Maligno escreveu:Não. O emulador tem de ser (e é) fiel ao alvo da emulação...
Eu gostaria de exemplificar e espero não dar a impressão de ser grosseiro no exemplo por ser breve na idéia:

A impressão que eu tenho dessa emulação (mesmo sem conhece-la) é como um fusca rodar num free-way. A idéia é de passar que o fusca irá continuar sendo fusca porém andará que melhor performace num estrada boa que numa não asfaltada. Mas este assunto não deveria se extender, porque eu mesmo não conheço essa emulação, ora porque na minha máquina utilizo dois HDs (WIN98 num e WINXP no outro) e seleciono na hora de inicializar através do SETUP. Mas que há uma grande diferença na execução do aplicativo entre o WINXP e WIN98... há.

Maligno escreveu:Porque? Basta executar o programa novamente, recolocando o título.
Tudo bem, porém está sujeito a ser driblado pelo usuário na hora de execução.

Maligno escreveu:Ao executá-lo, o título é trocado. Ao encerrar e executar de novo o título retorna, como antes. Não é isso?
Eu até iria abrir mão, porque também acho que se usuário quer sacanear... também assim é demais !!!. Mas é que no WIN98 esta função não está funcionando corretamente. Ela as vezes funciona momentaneamente e mesmo ainda a sessão não te sido fechada, retorna o nome do título original. Eu poderia usar a função do Dave OL_95VMTITLE() que roda bem em 95 e 98. Porém... preciso saber a versão do WINDOWS. E essa outra questão (da versão do Windows) não é tão simples assim.

Existem vários motivos em que nos vemos com a necessidade de saber a versão do WINDOWS para trabalhar de forma diferenciada conforme cada versão. E a criação de uma função em C seria o mais recomendado, porque o uso do comando do sistema operacional VER, não funciona em todas a situações.

Por exemplo: se você criar um arquivo .BAT e colocar VER > VERWIN.TXT, e for executado... você verá que não conterá resultado alguna nesse arquivo (teste feito em WIN98). Porém se na linha de comando você digitar VER > VERWIN.TXT daí sim terá o conteúdo de acordo a versão do WINDOWS. Esquisito, não é ?. Também se for rodar o VER através do RUN e executar o programa irá criar o arquivo com a versão de emulação no WINXP (versao 5.00). Veja tópico dos nosso colegas: http://www.pctoledo.com.br/forum/viewto ... ao+windows

Maligno escreveu:Não estou entendendo mais nada. Quando isso ocorria, uma outra janela era aberta? Que função você utilizava no momento? A de troca de título?
Isso me ocorreu uma vez e não conseguí reporduzir o mesmo caso e nem tentei mais (usando o APPTITLE). Eu tinha aberto duas sessões de PROMPT-MSDOS e quando accionei o gerenciador de tarefas vi que estava os dois PROMPT-MSDOS e mais uma tarefa com o nome que eu tinha dado para uma das janelas. Mas não abriu nenhuma janela extra, simplesmente foi uma traefa que inclusive não conseguí finalizar (tive que resetar).

Maligno escreveu:...utiliza uma interrupção chamada Multiplex, que não funciona em 32 bits... Postei o link para um colega
Essa solução seria o WinFullScr() que você postou para WCARDOSO (sobre ICONE NO XP) ?. Mas lembre que a minha sugestão não seria alternar o modo de exibição através do WAPI (que acho isto muito mais dificil) e sim identificar se a sessão está em modo TEXTO ou JANELADO escrevendo o resultado num arquivo texto.

Maligno, quando você menciona: "Ela utiliza uma interrupção chamada Multiplex, que não funciona em 32 bits. Isso nem é mais problema." Você quer dizer que em WIN98 você conseguiria detectar se está em modo texto ?.

Bem me disculpe se estou um pouco (bastante) insistente. E espero ter respondido as suas dúvidas sobre as minhas colocações.

Um clip-abraço,

Pablo :)Pos
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

WAPI.LIB ==> COMANDO VER

Mensagempor Pablo César » 20 Jan 2007 17:40

Corrigindo... O que eu disse que ao rodar o VER dentro do arquivo BATCH, não daria certo. Não é assim. dá certo sim. O teste que eu fiz e não deu certo foi dentro de um BATCH mas com uma condição, daí sim não funciona. Para quem quer saber usei:

IF NOT EXIST C:VERWIN.TXT VER > C:VERWIN.TXT

Mas desta forma não funcina, cria arquivo mas em branco.

Desculpem o meu equivo.

Um clip-abraço

:xau
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Mensagempor sygecom » 20 Jan 2007 18:51

Primeiro Gostaria de parabenizar o Maligno e a todos que estaum colaborando por essa otima ferramenta.......

Tche, atraves dessa WAPI.LIB eu consigo imprimir em impressoras USB ?? Se sim como faço isso....????

Jah baixei o pacote jah dei uma olhada nos exemplos de impressão mas a unica coisa q consigo é enviar o arquivo para a fila de impressão....mas acreditem se quiser ele não imprime e nem sai da fila de impressão.

Jah toh passando a usar diversas das funções dessa LIB...como a do X das janelas,Titulo da Janela,Tela cheia e alguns Sons...

Mais uma vez parabens Maligno...por se dedicar a essa ferramenta.... -:] -:] -:]
Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Re: WAPI.LIB

Mensagempor Maligno » 22 Jan 2007 01:15

Pablo César escreveu:A impressão que eu tenho dessa emulação (mesmo sem conhece-la) é como um fusca rodar num free-way.

Tudo bem que não queira estender a discussão sobre emulação, mas apenas para deixar mais claro: os emuladores que existem (eu uso o VMWare) são fiéis a extremo. Se rodam Linux, o comportamento será de Linux, sem nada a mais nem a menos. No Windows 98 (com o XP como host) tudo funciona perfeitamente (com as devidas limitações naturais) como num Windows 98 real. A velocidade, claro, reduz-se um pouco. E para o seu caso, que utiliza dois HDs, se tiver um processador relativamente rápido, aconselho a utilização de um emulador. E não só para fins de teste, como normalmente é. Tenho também uma máquina XP emulada, que utilizo para visitar sites de cárater "duvidoso". Na eventualidade de alguma "contaminação" apenas gravo uma máquina "virgem" em cima da contaminada. É bem prático.

Mas é que no WIN98 esta função não está funcionando corretamente. Ela as vezes funciona momentaneamente e mesmo ainda a sessão não te sido fechada, retorna o nome do título original. Eu poderia usar a função do Dave OL_95VMTITLE() que roda bem em 95 e 98. Porém... preciso saber a versão do WINDOWS. E essa outra questão (da versão do Windows) não é tão simples assim.
Existem vários motivos em que nos vemos com a necessidade de saber a versão do WINDOWS para trabalhar de forma diferenciada conforme cada versão. E a criação de uma função em C seria o mais recomendado, porque o uso do comando do sistema operacional VER, não funciona em todas a situações.

Se esse era o problema, problema resolvido. Modifiquei o WAPI para informar os dados acerca da versão do sistema operacional. Com o switch "-GETWINDOWSINFO:<resultFile>" você obtém todas as informações necessárias. A função de abstração se chama GetWinInfo(). Leia o \WAPI\LIB\README.TXT na parte que se refere às funções do diretório \LIB\OS. Agora a função SetAppTitle() testa a plataforma em operação. Se for kernel NT, ela utiliza o WAPI, da mesma forma como estava fazendo até agora. Porém, se não for NT, ele passa a utilizar a função OL_95AppTitle(), da OSLib que, evidentemente, terá de ser incluída no seu script de linkedição. Fiz uma nova versão do demo UNIQUE.EXE. Testei no meu Win98 virtual e funcionou corretamente.

Código exemplo de uso da função GetWinInfo():

#include "macros.ch"

WAPIExeDir(".")   // extrai WAPI.EXE para a pasta corrente
EraseWAPI(_kTRUE) // função nova: se TRUE, o WAPI.EXE será
                     apagado depois de utilizado.
clear

aInfo := GetWinInfo()
? "Platform: " + aInfo[1]
? "ID......: " + aInfo[2]
? "Pack....: " + aInfo[3]
? "Version.: " + aInfo[4]
?

/*
Saída para o meu XP real
---------------------------------
Platform: NT
ID......: Windows XP Professional
Pack....: Service Pack 2
Version.: 5.1.2600

Saída para o Windows 98 virtual
---------------------------------
Platform: 9X
ID......: Windows 98 SE
Pack....: A
Version.: 4.10.67766446
*/


Mas lembre que a minha sugestão não seria alternar o modo de exibição através do WAPI (que acho isto muito mais dificil) e sim identificar se a sessão está em modo TEXTO ou JANELADO escrevendo o resultado num arquivo texto.

Eu só comentei a respeito desta função porque foi esta cujo código você postou. :)

Maligno, quando você menciona: "Ela utiliza uma interrupção chamada Multiplex, que não funciona em 32 bits. Isso nem é mais problema." Você quer dizer que em WIN98 você conseguiria detectar se está em modo texto ?.

Sinto muito, mas não foi isso o que eu quis dizer. Quanto ao problema que eu disse estar resolvido, eu quis dizer sobre o caso da comutação para tela cheia através da função WinFullScr(). Não tem nada a ver com checagem de modo.

Teste a nova versão da LIB. Aliás, já vá direto para o teste com o demo UNIQUE. Acho que agora vai dar certo. Mas atente para um detalhe: no Windows 98 o título da aplicação é prefixado com a string "Prompt do MS-DOS - ". Resolvi isso modificando o bloco de código que faz a pesquisa na matriz de títulos que o UNIQUE obtém. Leia o fonte se tiver dúvida.

Relembrando os links:
http://buzinello.com/download/wapi.zip
http://buzinello.com/download/wapi_demo.zip (UNIQUE)


[]'s
Maligno
http://www.buzinello.com/prg
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Mensagempor Maligno » 22 Jan 2007 01:37

sygecom escreveu:Tche, atraves dessa WAPI.LIB eu consigo imprimir em impressoras USB ?? Se sim como faço isso....????

Sim, é possível. Mas apenas no modo RAW (você é quem deverá formatar o texto). Testei com uma HP LaserJet 1022 USB. Para fazer isso é muito simples. Direcione sua impressão para um arquivo e execute a função de impressão. Supondo que seu arquivo se chama REPORT.TXT:

if PrintFile("HP LaserJet 1022","REPORT.TXT","TITULO NO SPOOLER")
   ? "Impressão (modo RAW) encaminhada para o spooler.
   ?
   quit
end
? "Houve um erro qualquer..."
? "Basta verificar o retorno da função WAPIError()."
?


Alternativamente, para imprimir na impressora default, troque o nome da impressora para um simples "#". Os SETs são para ajustar o título automático. Neste caso, será algo como "clipper.report@21/01/2007,12:34".

set date british
set century on
PrintFile("#,"REPORT.TXT")


Jah baixei o pacote jah dei uma olhada nos exemplos de impressão mas a unica coisa q consigo é enviar o arquivo para a fila de impressão....mas acreditem se quiser ele não imprime e nem sai da fila de impressão.

Estranho. Infelizmente não consegui desligar o redirecionamento automático para o spooler, para imprimir diretamente para a impressora. Nem acho vantagem, mas para efeito de teste apenas. Tentou em outra máquina?

Jah toh passando a usar diversas das funções dessa LIB...como a do X das janelas,Titulo da Janela,Tela cheia e alguns Sons...

Já fico feliz de saber que está aproveitando. Aliás, falando em som, está aí uma coisa que não gostei muito. Não foi possível tocar um WAVE em modo assíncrono. O retorno ao Clipper só ocorre depois do som terminar de tocar. Para sons curtos o problema não chega a incomodar tanto. Mas quando a duração aumenta muito, fica meio chato. Pra resolver isso, vou ter que criar um modo de operação diferente para o WAPI. É uma mudança meio radical. Vou precisar de um tempo maior.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Mensagempor sygecom » 22 Jan 2007 10:40

Buenas...
Sim, é possível. Mas apenas no modo RAW (você é quem deverá formatar o texto). Testei com uma HP LaserJet 1022 USB. Para fazer isso é muito simples. Direcione sua impressão para um arquivo e execute a função de impressão. Supondo que seu arquivo se chama REPORT.TXT:


Tche, tentei de tudo que é jeito....mas nem com reza braba o arquivo vai para a fila de impressão.....abaixo segue um exemplo de como eu faço hj nas impressora matricial...
EXEMPLO 01

SET DEVICE TO PRINT
IF NA TELA="S"
   SET PRINT TO USB.TXT
ELSE
   SET PRINT TO LPT1
ENDIF
@ prow()+1,00     SAY "IMPRIMINDO"
@ prow()+1,00     SAY "IMPRIMINDO"
@ prow()+1,00     SAY "IMPRIMINDO"

SET PRINTER TO
set device to screen
NETCANCEL("LPT1")

IF TELA="S"
   EDICAO("USB.TXT")  // VISUALIZAR O ARQUIVO TEXTO NO VIDEO
ENDIF
return

Obs: o que seria impressão em MODO RAW ???

No exemplo Abaixo o arquivo vai para a impressora HP-PSC-1410 diz que esta imprimindo mas não imprime nd e não aceita cancelar a impressão da impressora.(Peguei o exemplo abaixo no PRINT1.PRG)

FUNC TESTE
local cFile := UniqFName(WAPITmpDir())
local cBuff
local nRet

cPrtName="HP1410"

set date british
set century on

cRptTitle="clipper.report@"+DtoC(Date())+","+Time()

PRIVATE cRptFile:="USB.TXT"
     
WAPIError(_kERROR_NONE)

if cPrtName=_kVOID .or. cRptFile=_kVOID .or. !File(cRptFile)
   WAPIError(_kERROR_PARAMETERS)
   return _kFALSE
end

if RunWAPICmd("-PRINT:"+Quote(cPrtName )+_kARGS_SEP+;
                        Quote(cRptFile )+_kARGS_SEP+;
                        Quote(cRptTitle)+_kARGS_SEP+;
                        Quote(cFile    )            )
   if !ReadRetFile(cFile,@cBuff)
      return _kFALSE
   end
end
nRet := Val(cBuff)
WAPIError(nRet)
 
return (nRet=_kERROR_NONE)


Obs.:
Esse Exemplo Abaixo nem se quer aparece na Impressora o arquivo !!!!
PrintFile("#","USB.TXT")


Referente ao SOM vc tem toda a razão ele retarda os sistema na hora da execução do som....mas no meu caso eu toh usando somente uns sons pequenos e não esta atrapalhando em nd......

Abraços e No que eu poder Ajudar prende o grito.....e mais uma vez parabens !!!
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Mensagempor Maligno » 22 Jan 2007 11:02

o que seria impressão em MODO RAW ???

É quando o conteúdo é transmitido sem que seja feita qualquer alteração por parte do dispositivo que o transmite.

No exemplo Abaixo o arquivo vai para a impressora HP-PSC-1410 diz que esta imprimindo mas não imprime nd e não aceita cancelar a impressão da impressora.(Peguei o exemplo abaixo no PRINT1.PRG)

Pelo que entendi o arquivo vai para o spooler, mas a impressora não dá sinal de vida. Se for isso, o trabalho do WAPI está sendo feito como esperado. O problema está em passar do spooler para a impressora. Daí eu não sei o que dizer. Você pôde testar em outra máquina?

Esse Exemplo Abaixo nem se quer aparece na Impressora o arquivo !!!!
PrintFile("#","USB.TXT")

Bom, se não vai para o spooler, aí sim há um erro. Tentou pegar uma lista de impressoras instaladas? Use a função GetPrinters() para uma lista completa e GetDefPrinter() para saber qual está configurada como default.

Aliás, qual Windows você está usando? Nos meus testes usei o XP Pro e tudo funciona corretamente. As funções contidas na LIB funcionaram. Assim, procure evitar adaptá-las para seus testes. Você pode acabar esquecendo alguma coisa e elas podem deixar de funcionar. Ao invés isso, apenas chame-as como indicado: PrintFile("HP1410","USB.TXT"), por exemplo. Aliás, um lembrete: não se incomode em remover os espaços entre nomes de impressoras. O WAPI não se perderá nisso.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Mensagempor sygecom » 22 Jan 2007 11:32

Buenas...
Você pôde testar em outra máquina?


Posso sim....vou agora a tarde em um cliente e já testo por lah...

Bom, se não vai para o spooler, aí sim há um erro. Tentou pegar uma lista de impressoras instaladas? Use a função GetPrinters() para uma lista completa e GetDefPrinter() para saber qual está configurada como default


Peguei a lista de Impressoras e coloquei num DBF deu tudo certo....consegui achar a impressora padrão....mas igaul não funciona quando mando imprimir pelo comando PrintFile("cPrtName","USB.TXT")

Aliás, qual Windows você está usando?

Eu toh usando o Windows XP-Pro.

. Aliás, um lembrete: não se incomode em remover os espaços entre nomes de impressoras. O WAPI não se perderá nisso.

Obrigado pelo Lembrete.....eu já tinha visto no README...mas é que eu Tirei os espaço em branco para Testar mesmo......não querendo duvidar do WAPI.LIB mas....a Anciedade de ver funcionar é grande....hehehehe.......

No Final da Tarde eu volto e falo aqui como foi os teste em outra maquina com outra impressora !!!

Abraços !!!
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Mensagempor Maligno » 22 Jan 2007 11:42

Peguei a lista de Impressoras e coloquei num DBF deu tudo certo....consegui achar a impressora padrão....mas igaul não funciona quando mando imprimir pelo comando PrintFile("cPrtName","USB.TXT")

Acho que você quis dizer: PrintFile(cPrtName,"USB.TXT"), sem as aspas, não é? :)

Tente também PrintFile(GetDefPrinter()[1],"USB.TXT"), que tem o mesmo efeito (pra mim, pelo menos) que PrintFile("#","USB.TXT"). Aliás, o efeito é o mesmo, mas os caminhos são diferentes.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Mensagempor sygecom » 22 Jan 2007 12:23

Acho que você quis dizer: PrintFile(cPrtName,"USB.TXT"), sem as aspas, não é? :)


Desculpa me passei nas aspas estou fazendo conforme esta acima e não teve jeito !!!

Tente também PrintFile(GetDefPrinter()[1],"USB.TXT"), que tem o mesmo efeito (pra mim, pelo menos) que PrintFile("#","USB.TXT"). Aliás, o efeito é o mesmo, mas os caminhos são diferentes.


Tche...realmente não sei o que esta acontecendo mas fiz desse outro modo e tb..não deu certo....acho que pode ser algo aqui na minha maquina com essa impressora....(NO WINDOWS FUNCIONA TUDO CERTO),.agora a tarde toh indo em um cliente e vou testar de tudo que é jeito lah !!! Mas caso não de certo por lah eu não vou me descançar em quanto não ver isso funcionando....desde já agradeço pelo sua nobre paciencia e desculpa alguma coisa !!

Abraços !!!
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Mensagempor sygecom » 22 Jan 2007 14:28

Maligno

Toh no meu cliente e aqui tem uma Epson LX-300 , aqui funcionou perfeitamente no modo abaixo:

FUNC TESTE  // IMPRIMIR EM USB
local cFile := UniqFName(WAPITmpDir())
local cBuff
local nRet

SELE 1
USE C:\IMP ALIAS IMP SHARED // ARQUIVO ONDE ESTA GRAVADO A IMPRESSORA PADRÃO

SELE IMP
cPrtName=IMP

set date british
set century on

cRptTitle="clipper.report@"+DtoC(Date())+","+Time()

PRIVATE cRptFile:="USB.TXT"   // CAMINHO DO ARQUIVO
     
WAPIError(_kERROR_NONE)

if cPrtName=_kVOID .or. cRptFile=_kVOID .or. !File(cRptFile)
   WAPIError(_kERROR_PARAMETERS)
   return _kFALSE
end

if RunWAPICmd("-PRINT:"+Quote(cPrtName )+_kARGS_SEP+;
                        Quote(cRptFile )+_kARGS_SEP+;
                        Quote(cRptTitle)+_kARGS_SEP+;
                        Quote(cFile    )            )
   if !ReadRetFile(cFile,@cBuff)
      return _kFALSE
   end
end
nRet := Val(cBuff)
WAPIError(nRet)
 
return (nRet=_kERROR_NONE)


Agora no modo mais simples que é chamando a função PrintFile(GetDefPrinter()[1],"USB.TXT") ou PrintFile(cPrtName,"USB.TXT") não tem jeito...mas isso não é problema pq peguei a função TESTE e fiz dela padrão nas impressão do meu sistema......até aqui sem stress....agora me diz uma coisa....não querendo ser chato..mas existe alguma possibilidade de imprimir em modo CONDENSADO pela WAPI.LIB ???

Abraços......e Obrigado por Tudo !!! -:] -:] -:]
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Mensagempor Maligno » 22 Jan 2007 16:38

Agora no modo mais simples que é chamando a função PrintFile(GetDefPrinter()[1],"USB.TXT") ou PrintFile(cPrtName,"USB.TXT") não tem jeito...

Que cois mais esquisita. Um nome de impressora é sempre um nome de impressora. Não importa se o nome vem de uma função ou de um DBF. Se for o nome certo, tem que imprimir. Você tentou ver no seu cliente qual é o resultado da função GetDefPrinter()? Aliás, qual é o nome da impressora?

existe alguma possibilidade de imprimir em modo CONDENSADO pela WAPI.LIB ???

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.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Mensagempor Maligno » 22 Jan 2007 16:40

NO WINDOWS FUNCIONA TUDO CERTO

O que você quer dizer com isso? Você está tentando usar no DOS puro?

[]'s
Maligno
http://www.buzinello.com/prg
Avatar de usuário

Maligno
Membro Master

Membro Master
 
Mensagens: 6390
Data de registro: 06 Jul 2004 01:40
Cidade/Estado: Londrina/PR
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Mensagempor sygecom » 22 Jan 2007 17:12

O que você quer dizer com isso? Você está tentando usar no DOS puro?

Desculpa.....falha minha....eu quiz dizer q para eu imprimir fora do meu sistema em CLIPPER tudo Imprime certinho.....ex: arquivos em EXCEL,WORD e ETC...a impressora funciona perfeitamente...

Que cois mais esquisita. Um nome de impressora é sempre um nome de impressora. Não importa se o nome vem de uma função ou de um DBF. Se for o nome certo, tem que imprimir. Você tentou ver no seu cliente qual é o resultado da função GetDefPrinter()? Aliás, qual é o nome da impressora?

Estranho mesmo !!! Mas acredito que a questão não esta no nome da impressora......estou pegando o nome da impressora e a porta do resultado de GETPRINTERS() e gravando num DBF soh para ter cadastrado as impressora do windows no meu sistema em CLIPPER....Obs:A Impressora no meu cliente é uma LX-300.

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.


Tche, por exemplo no meu caso tenho relatorios que vão alem das 80 colunas e mando imprimir no condensado(EM IMPRESSORA LX-300) para sair tudo nos conforme.....não querendo torrar sua paciencia...existe alguma maneira de eu poder resolver essa questão de impressão condensado usando a WAPI.LIB ex : gera um arquivo RTF ou WORD jah na fonte correta para imprimir pequeno e depois enviar o arquivo para o SPOOLER....vc sugere alguma coisa.....

Mais uma vez Obrigado.....mas vc esta colaborando e muito a todos aqui no forum......
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Anterior Próximo



Retornar para Ferramentas de Apoio

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro