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
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: WAPI - APLICATIVO para MS-DOS

Mensagem por Maligno »

MARINI escreveu:wapi -GETPRINTERS:TESTE.TXT e
wapi -GETDEFPRINTER:TESTE.TXT não cria nada.

Sabe me dizer o motivo?
Realmente não. Já testei com XP e acabei de testar (de novo) com o Win98 (máquina virtual) e funcionou sem problemas. Mais pra frente vou testar com Win95 (também virtual). Acredito que vá funcionar.
Sem querer ser chato, mas tem certeza de que emitiu o comando corretamente? É a única forma que imagino que poderia fazer dar errado. Às vezes eu mesmo esqueço do hífen ou do dois-pontos.

[]'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

Re: WAPI.H

Mensagem por Maligno »

Pablo César escreveu:WAPI -SOUNDPLAY:1

Teoricamente, era para tocar o primeiro evento do meu WIN98 (inclusive está definido esse evento). E está dando o seguinte erro, seja com 1,2,3, etc...:

Código: Selecionar todos

WAPI causou uma falha de página inválida no
módulo WINMM.DLL em 0197:bfdf8a4b.
E inclusive toca sempre o mesmo som do evento de iniciar o Windows.
Os eventos de som devem estar configurados no Painel de Controle. Se não estiverem configurados, não sai som algum. :)
Pena que no meu Win98 (virtual) não consegui instalar minha placa de som. Mas deve funcionar. Vou testar num Win98 real. Mas acredito que não tem problema algum.
Será que o meu WINDOWS está dando pau ?. Alguem mais poderia testar pra nós ?
Quanto a este erro, infelizmente, acho que seu Windows está com pau.
Mas antes de reinstalar, vou te mandar por eMail o WINMM.DLL do meu Win98. Substitua-o e tente de novo. Se ainda assim der esse erro, não há muito o que fazer, a não ser reinstalar. Aliás, quando eu usava Win98, periodicamente tinha que reinstalar por cima dele, sem formatar. Só isso já resolvia os problemas.

[]'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 - APLICATIVO para MS-DOS

Mensagem por Pablo César »

Maligno escreveu:Sem querer ser chato, mas tem certeza de que emitiu o comando corretamente? É a única forma que imagino que poderia fazer dar errado. Às vezes eu mesmo esqueço do hífen ou do dois-pontos.
Eu também sem querer substimar ao colega MARINI, mas outra causa poderia ser também a falta de impressora cadastrada no WINDOWS ?.

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

Re: WAPI.H

Mensagem por Maligno »

Pablo César escreveu:WAPI -SOUNDPLAY:1

Teoricamente, era para tocar o primeiro evento do meu WIN98 (inclusive está definido esse evento). E está dando o seguinte erro, seja com 1,2,3, etc...:

Código: Selecionar todos

WAPI causou uma falha de página inválida no
módulo WINMM.DLL em 0197:bfdf8a4b.
Falei cedo demais. :)
Consegui configurar minha placa de som no meu Windows 98 virtual e deu o mesmo problema que no seu Windows. Muito esquisito. Mas já foi resolvido. Troquei a forma de acesso aos eventos de sons e acho que ficou até melhor. Baixe o ZIP atualizado:

http://buzinello.com/download/wapi.zip

[]'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á

PLAYSOUND

Mensagem por Pablo César »

OK, agora sim !. Sem erro.

:)Pos
MARINI
Usuário Nível 3
Usuário Nível 3
Mensagens: 288
Registrado em: 06 Jul 2004 08:06
Localização: Pindamonhangaba SP

Re: WAPI - APLICATIVO para MS-DOS

Mensagem por MARINI »

MARINI escreveu: wapi -GETPRINTERS:TESTE.TXT e
wapi -GETDEFPRINTER:TESTE.TXT não cria nada.

Sabe me dizer o motivo?
Agora, nesta nova versao está criando os arquivos de retorno.
Todavia, qualquer dos 2 comandos acima somente retorna a impressora padrão. Pelo que está anotado na pagina 2 o GETPRINTERS será alterado para informar todas as impressoras cadastradas.
Sds
Marini
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: WAPI - APLICATIVO para MS-DOS

Mensagem por Maligno »

MARINI escreveu:
wapi -GETPRINTERS:TESTE.TXT e
wapi -GETDEFPRINTER:TESTE.TXT não cria nada.

Sabe me dizer o motivo?
Agora, nesta nova versao está criando os arquivos de retorno.
Mas eu não alterei nada com relação a criação desses arquivos. Se bem que o que importa é que agora está funcionando. :)
Todavia, qualquer dos 2 comandos acima somente retorna a impressora padrão.
-GETPRINTERS: deveria listar todas as impressoras.
Pelo que está anotado na pagina 2 o GETPRINTERS será alterado para informar todas as impressoras cadastradas.
Já lista todas. A alteração era somente para informar qual delas é a default. O que, aliás, já está pronto. Só não subi ainda o ZIP novo.

[]'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 - getprinters

Mensagem por Pablo César »

Engraçado MARINI, para mim funciona perfeitamente. Mas é claro, como disse o MALIGNO, só faltaria estar disponível pra nós a indicação de quais das impressoras é a "padrão" listada no arquivo criado.

Será que você não está matando o arquivo anteriorrmente criado ?? Qual é a versão do seu WINDOWS ?. Esperemos atualização do WAPI, baixe-lo e tete novamente. Porque em todas as versões do WAPI, ele funcionou.

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

Re: WAPI - getprinters

Mensagem por Maligno »

Primeiramente me desculpem pela demora em dar uma resposta às funções que ainda faltavam. Mas nos últimos dias fiquei muito preso a vários outros serviços. E quase não tive tempo pra trabalhar no WAPI, inclusive nos finais de semana.

Inclui agora as funções de leitura, escrita e apagamento no Registry do Windows. Uma nova lista dos switches que já temos, em ordem alfabética (com * nos novos):

Código: Selecionar todos

*  -DELETEREGISTRY:<fullKeyPath>;<entryName>;<resultFile>
   -FLASH:<times>[;<handle>]
   -GETAPPINFO:<resultFile>
   -GETDEFPRINTER:<resultFile>
   -GETHDINFO:<resultFile>
   -GETPRINTERS:<resultFile>
   -HIBERNATE
   -MYHANDLE:<resultFile>
   -PLAYSOUND:<source> 
   -POWEROFF
   -PRINT:<printerName>;<inputFile>;<reportTitle>;<resultFile>
*  -READREGISTRY:<fullKeyPath>;<entryName>;<resultFile>
   -REBOOT
   -SETAPPTITLE:<title>
   -SETBUTTONX:<ON|OFF|DEL>
   -SETTASKBAR:<HIDE|SHOW>
   -SUSPEND
*  -WRITEREGISTRY:<fullKeyPath>;<entryName>;<value>;
                  <valueType>;<resultFile>
Uma observação a respeito dos comandos do Registry: agora que lembrei que não comentei no fonte (depois eu atualizo) que fiz o WAPI trabalhar apenas com dois tipos básicos de dados: caractere e numérico, tanto para leitura quanto para escrita, a exceção, claro, do comando de apagamento, onde o tipo de dado não importa.

De resto, descobri que não há meio de resolver o problema do título das janelas nos Windows 9X/Me. Não pelo WAPI. Mas será resolvido pela LIB que vou montar a partir de agora. Por meio dela o WAPI será embutido no programa Clipper através dos resources que já fiz há um bom tempo. Mas ela será, principalmente, uma camada extra de código para abstrair e facilitar o uso desses comandos.

Link: http://buzinello.com/download/wapi.zip

Leia o fonte para conhecer os detalhes dos novos comandos.
Só pra lembrar: bug-reports e sugestões serão sempre bem-vindos. :)

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


PS: Junto a esta LIB, com o tempo, seguirão também as funções que escrevi ao longo dos anos. Todas prontas e testadas há muito tempo. Mas serão incluídas na LIB só após a documentação estar pronta. Ou seja, conforme o tempo permitir.
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 - APLICATIVO para MS-DOS

Mensagem por Pablo César »

Caro colega MALIGNO:

A.) O switch -MYHANDLE, ainda está retornando o código -53 (_ERROR_SMART_IDENTIFY).

1.) Este erro realmente pertenceria a esta opção ?. Visto que a função do switch -MYHANDLE é definida no código fonte como: "Cria e carrega arquivo (o conteúdo anterior será perdido) com o handle da janela atual"

2.) "Cria e carrega arquivo...", carrega o arquivo ? Para quê esta finalidade ?

B.) E o swicth -GETDEFPRINTER, não estaria redundante por existir na opção do outro switch -GETPRINTERS ?.

C.) Poderias detalhar a sua sintaxe de como poderia ser utilizado o WAPI.EXE para ser convertido em OBJ ou LIB, através do seu aplicativo "clprsrc1" ?

Obrigado, pelas suas contribuições e seguirei acompanhando este processo de elaboração do WAPI que está ficando muito BOM !. E abrirei um novo tópico, questionando a utilidade de gravação no REGISTRY do WINDOWS.

Ump clip-abraço ! :)Pos
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: WAPI - APLICATIVO para MS-DOS

Mensagem por Maligno »

A.) O switch -MYHANDLE, ainda está retornando o código -53 (_ERROR_SMART_IDENTIFY).
Certeza??? O switch -MYHANDLE não retorna código de erro. Retorna apenas o handle da janela atual, que é sempre um número positivo.
2.) "Cria e carrega arquivo...", carrega o arquivo ? Para quê esta finalidade ?
Para informar o número do handle da janela. Acho que você pode ter se confundido. Carregar não é um verbo ligado apenas à leitura, propriamente. Você pode criar o arquivo e carregá-lo com dados (inserir nele) que depois serão lidos.
B.) E o swicth -GETDEFPRINTER, não estaria redundante por existir na opção do outro switch -GETPRINTERS ?.
Sim e não. -GETPRINTERS dá a lista toda. Mas eu posso querer saber apenas qual é a impressora default. É uma opção a mais. Melhor sobrar do que faltar. :))
C.) Poderias detalhar a sua sintaxe de como poderia ser utilizado o WAPI.EXE para ser convertido em OBJ ou LIB, através do seu aplicativo "clprsrc1"?
Bom, eu acho que as instruções que constam no README do ZIP deveriam ser suficientes. O que exatamente você não entendeu?
Quanto ao WAPI você não precisa se preocupar. Eu vou embutí-lo na LIB que está sendo montada.
Obrigado, pelas suas contribuições e seguirei acompanhando este processo de elaboração do WAPI que está ficando muito BOM !. E abrirei um novo tópico, questionando a utilidade de gravação no REGISTRY do WINDOWS.
Já vi lá. Responderei algo. ;-)

[]'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 - APLICATIVO para MS-DOS

Mensagem por Pablo César »

Caro colega MALIGNO,

Respondendo as questões anteriores:
Certeza??? O switch -MYHANDLE não retorna código de erro.
Na verdade, neste swicth o WAPI no está escrevendo resultado algum no arquivo. Pelo menos isto acontece comigo no WIN98. O valor mencionado na minha postagem anterior de -53, era resultado de outro teste e pensei que o resultado do MYHANDLE iria sobrescrever o anterior.
Bom, eu acho que as instruções que constam no README do ZIP deveriam ser suficientes. O que exatamente você não entendeu?
Bem na verdade li e re-li o README.TXT, mas terei que executar passo a paaso para entender melhor. Ficam duas dúvidas entorno:

1.) Programas externos podem ser linkados juntamente com MEU_PROGRAMA_CLIPPER. Porém poderiam ser executados dentro do MEU_PROGRAMA_CLIPPER ?

2.) Se eu quisesse gerar um OBJ apartir do EXE, teria que converter primeiro em .ASM e depois compilar com TASM ?

Eu conseguí LINKAR MEU_PROGRAMA_CLIPPER (DEMO) com o MYTEST.OBJ que ja existia (não fui eu que gerei, ja estava no ZIP). Ficou fácil chegar ao resultado final, gerando novamente os arquivos .COM e o arquivo SUCESSO.TXT.
Quanto ao WAPI você não precisa se preocupar. Eu vou embutí-lo na LIB que está sendo montada.
Fico mais tranquilo, pois terei que executar passo a passo seguindo seu README.TXT. Mas como você mesmo menciona... para o programador de pouca (ou nenhum) fluência em Assembly, o processo todo poderá parecer um tanto intimidador

Mas claro que se a gente não mete as caras, nunca vamos saber se tem agua na piscina... hehe :)Pos
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: WAPI - APLICATIVO para MS-DOS

Mensagem por Maligno »

Na verdade, neste swicth o WAPI no está escrevendo resultado algum no arquivo.
Acabei de testar no meu Win98 virtual e funcionou perfeitamente. Será que vcê não poderia estar confundindo um arquivo com outro? Sabe como é: arquivo vai, arquivo vem. Eu mesmo já fiz muitas confusões com isso. :)
1.) Programas externos podem ser linkados juntamente com MEU_PROGRAMA_CLIPPER. Porém poderiam ser executados dentro do MEU_PROGRAMA_CLIPPER ?
Os programas externos não são linkados. Eles são transformados em um bloco fonte assembly, em valores hexa, compilados e embutidos no Clipper dentro de uma função.
2.) Se eu quisesse gerar um OBJ apartir do EXE, teria que converter primeiro em .ASM e depois compilar com TASM ?
Um objeto binário é um arquivo que contém o resultado da compilação de um arquivo fonte. Nele, além do código objeto, você terá também referências a símbolos externos (outras funções, variáveis, etc) que serão resolvidos em link-time, para depois serem ligados a outros arquivos objeto para, enfim, formarem um novo EXE. Exatamente por isso, você não pode gerar um objeto a partir de um executável. Não sei se entendi bem essa sua pergunta, mas descrevi como é que funciona.
Agora, se você está falando em como o "resources" funciona: o arquivo EXE é "convertido" em um fonte Assembly. O código binário puro é convertido em texto para esse fonte. O resultado, você "cola" no ponto que destaquei no fonte "padrão". Depois, é só rodar o TASM e pronto, você terá um objeto que poderá ser linkado junto com seu programa Clipper, da maneira como você sempre fez.
Eu conseguí LINKAR MEU_PROGRAMA_CLIPPER (DEMO) com o MYTEST.OBJ que ja existia (não fui eu que gerei, ja estava no ZIP). Ficou fácil chegar ao resultado final, gerando novamente os arquivos .COM e o arquivo SUCESSO.TXT.
Desculpe, mas não entendi o que tem a ver.
Fico mais tranquilo, pois terei que executar passo a passo seguindo seu README.TXT. Mas como você mesmo menciona... para o programador de pouca (ou nenhum) fluência em Assembly, o processo todo poderá parecer um tanto intimidador
Pelo menos no caso do WAPI eu vou fazer a LIB e você não terá de se preocupar. Mas poderá também utilizar o "resources" com quaisquer outros arquivos que quiser. No WAPI vai ficar fácil depois pra você desfrutar de seus benefícios:

Código: Selecionar todos

PlaySound("SystemSart")   // reproduz o WAV da inicialização
aPrinters = GetPrinters() // recupera a lista de impressoras
Pra você vai funcionar assim. Não fica mais fácil? Pois é esse o principal benefício das funções de abstração. Com essa camada extra de código conseguimos tornar tudo muito mais simples e direto.
Mas claro que se a gente não mete as caras, nunca vamos saber se tem agua na piscina... hehe :)Pos
Isso é verdade. :))

[]'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 - APLICATIVO para MS-DOS

Mensagem por Pablo César »

Caro colega MALIGNO, lamentavelmente, não funciona comigo en puro WIN98. Você poderia dizer que pode ser a minha máquina, mas aqui eu tenho outra que está zeradinha com WIN98, recentemente instalado. E não funciona também, simplesmente não cria arquivo algum.

Código: Selecionar todos

PlaySound("SystemSart")   // reproduz o WAV da inicialização
aPrinters = GetPrinters() // recupera a lista de impressoras
Puxa, já imaginei tudo isso graças a criação de uma LIB. Na verdade, espero que DEUS me dê a chance de poder ver o WAPI.LIB antes de morrer. Desculpe MALIGNO, isso não estou querendo dizer que você está demorando muito. Ora porque estou super-ancioso para ver outros resultados, como o nome (titulo) da janela ativa, ver se a aplicação está rodando em modo janelado ou janela inteira (seria outro GRANDE PARADIGMA, resolvido no CLIPPER).

Mas estou depositando muita fé em seu projeto e fico muito agradecido MALIGNO. Pena que o pessoal, anda com poucas idéias ultimamente. Mas com certeza lembrarão de você até o CLIPPER acabar...

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

Re: WAPI - APLICATIVO para MS-DOS

Mensagem por Maligno »

Caro colega MALIGNO, lamentavelmente, não funciona comigo en puro WIN98. Você poderia dizer que pode ser a minha máquina, mas aqui eu tenho outra que está zeradinha com WIN98, recentemente instalado. E não funciona também, simplesmente não cria arquivo algum.
Desculpe, mas você me obriga a fazer a pergunta padrão: tem certeza de que emitiu o comando corretamente? Se der erro em algum argumento, o WAPI não informa nada.
Eu faço essa pergunta porque logo que vi sua mensagem, abri meu Win98 virtual e testei. Funcionou certinho. E eu uso o VMware, que emula o Windows 98 muito bem. Amanhã vou testar num HD que tenho encostado aqui, que está com o Windows 98 SE.

Código: Selecionar todos

PlaySound("SystemSart")   // reproduz o WAV da inicialização
aPrinters = GetPrinters() // recupera a lista de impressoras
Puxa, já imaginei tudo isso graças a criação de uma LIB.
Essas duas funções já existem. Acabei de fazer. Ficou muito legal. Simples, rápido e invisível. Funciona de um jeito que até dá a impressão de que foi feito em Clipper mesmo.
Na verdade, espero que DEUS me dê a chance de poder ver o WAPI.LIB antes de morrer. Desculpe MALIGNO, isso não estou querendo dizer que você está demorando muito.
Poxa! Ainda bem. :)))))))
Infelizmente o tempo anda escasso. A vida segue e a gente tem compromissos pra cumprir. Mas uma hora a gente chega lá.
Ora porque estou super-ancioso para ver outros resultados, como o nome (titulo) da janela ativa, ver se a aplicação está rodando em modo janelado ou janela inteira (seria outro GRANDE PARADIGMA, resolvido no CLIPPER).
O esquema do nome da janela, como eu disse, será resolvido pelo Clipper mesmo. Pelo WAPI não vai dar pé. O tempo que eu ainda poderia gastar atrás de literatura não compensa o esforço pra uma coisa que posso resolver de um modo alternativo.
Agora conseguir saber como está rodando a janela é uma coisa complicada. Acho que descobrir como fazer isso vai dar um trabalhão. Mas vamos ver. Às vezes posso estar enganado.

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