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

Mensagem por Maligno »

Obrigado pelas correções, Pablo. Passaram batido. Deve ter sido a pressa ou o sono. :)
Já corrigi, mas não sou subir a correção agora. Nem tem tanta pressa, já que logo haverá outra atualização. Ademais, nas funções de abstração, no que me consta, está tudo certo. São essas três funções que mais importam.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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á

Mensagem por Pablo César »

Pois é percebí a data e hora dos arquivos, muito tarde...

Também percebí que no seu TODO LIST ficaram faltando os seguintes itens:

- Cancelamento de jobs de impressão do spooler
- Função para o modo residente no tray, "escutando" certo diretório em busca de certo arquivo a fim de que seja executado determinado aplicativo.

Não sei se esta ultima você ficou em analisar e fazer alguns testes. Assim como a questão de captura de resultados em USB e possibilidade de uso de DDE com o Clipper.

Outra questão que eu ainda não esqueço, é aquela questão de identificar se a sessão está em modo JANELA ou TELA-CHEIA. Nesta questão eu tinha sugerido a verificação de @ 00,00 da janela (ou o seu valor em pixels) para saber se nessa posição exite algum caracter ASCII ou se é gráfico. Só sei que ficou em que você ainda iria fazer uns testes.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
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 »

Pablo César escreveu:Pois é percebí a data e hora dos arquivos, muito tarde...
Fui tentar dormir naquela hora. Só tentei. :)
- Cancelamento de jobs de impressão do spooler
Ah, sim. Esqueci de comentar. Estive pensando com meus botões e acho que o cancelamento de uma tarefa de impressão é algo meio supérfluo e inútil. Supérfluo porque nem sempre se vai querer cancelar. E inútil porque muitas vezes o spooler demora uma pá de tempo pra cancelar a impressão. Não sei se vale o esforço de fazer isso.
- Função para o modo residente no tray
Veja de novo. Esta é a primeira da lista. Chamei de modo RES.
Não sei se esta ultima você ficou em analisar e fazer alguns testes. Assim como a questão de captura de resultados em USB e possibilidade de uso de DDE com o Clipper.
Capturar resultados em USB, já tinha comentado, é algo extremamente vago. Um monte de coisas pode vir pela USB. Seja impressora, scanner, mouse, teclado, etc. O que chega pela USB tem que passar por um driver do Windows. E sobre qual dispositivo? Para qual finalidade? Acho que o que mais interessava era a impressora USB, que é um problema praticamente resolvido. Mas de entrada, realmente não vejo o quê.
Sobre o DDE eu esqueci de colocar na nova sub-lista de "Possibilidades não confirmadas", que você pode ver na TODO list que acompanha a WAPI. Vou colocar agora.
Outra questão que eu ainda não esqueço, é aquela questão de identificar se a sessão está em modo JANELA ou TELA-CHEIA.
Sim, faltaram os testes, mas não esqueci. Só faltou tempo. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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á

Mensagem por Pablo César »

Maligno escreveu:inútil porque muitas vezes o spooler demora uma pá de tempo pra cancelar a impressão.
Ahhh é ? Eu pensei que essa demora pudesse ser encurtada, como você disse tem vezes que demora uma pá mesmo !. Então sendo assim, eu não a considero tão útil assim. Ao menos que você consiga encurtar caminhos e fazer alguma mágica no sistema do spooler.
Maligno escreveu:
- Função para o modo residente no tray
Veja de novo. Esta é a primeira da lista. Chamei de modo RES.
Esta função poderá ser vinculada como ouvidora, isto é verificar a todo instante determinado arquivo e executar determinado aplicativo ?.
Maligno escreveu:Sim, faltaram os testes, mas não esqueci. Só faltou tempo.
Ahhh bom ! Porque esse WIN98 é um KHARMA para você e para mim um suplício que tenho que conviver... Além de que este recurso iria possibilitar alternar a sessão com ALT-ENTER ora seja manual (dando mensagem ao usuário pra fazé-lo) ou através da futura função do WAPI.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
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 »

Pablo César escreveu:Então sendo assim, eu não a considero tão útil assim. Ao menos que você consiga encurtar caminhos e fazer alguma mágica no sistema do spooler.
O que eu poderia fazer é exatamente o que o próprio spooler faz. Então, daria no mesmo. :)
Esta função poderá ser vinculada como ouvidora, isto é verificar a todo instante determinado arquivo e executar determinado aplicativo ?.
Acho que você não está bem lembrado, mas já conversamos sobre isso em algumas oportunidades. É exatamente a funcão do modo residente: monitorar certo diretório para a carga de comandos via arquivo. Aliás, para até mesmo executar várias tarefas ao mesmo tempo, já que ele vai trabalhar com um sistema multi-threading.
este recurso iria possibilitar alternar a sessão com ALT-ENTER ora seja manual (dando mensagem ao usuário pra fazé-lo) ou através da futura função do WAPI.
A função de injeção de atalhos no buffer do teclado?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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á

Mensagem por Pablo César »

Maligno escreveu:A função de injeção de atalhos no buffer do teclado?
Ou até, eu disse. Se não for viável pela injeção do atalho com o WAPI, eu ficaria louco de contente, apenas avisando por usuário:

ALERT("Pressione as teclas ALT ENTER simultaneamente para mudança de exibição da tela.")

Puxa, a sua função de habilitar/desabilitar o SAVESCREEN do Windows, ficou muito bom. Testei hoje novamente, em situações de mudança de tipos de protetores e ainda com senha, no entanto funcionou legal. Ficou bom isso, gostei.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
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á

Mensagem por Pablo César »

Maligno escreveu:eu esqueci de colocar na nova sub-lista de "Possibilidades não confirmadas", que você pode ver na TODO list que acompanha a WAPI. Vou colocar agora.
Não esqueça também de adicionar testes de avaliação de desativar/ativar mouse do OS.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
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 »

Não esqueça também de adicionar testes de avaliação de desativar/ativar mouse do OS.
Esqueci de colocar na lista. Boa lembrança. Vou colocar agora, antes que esqueça de novo. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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á

Mensagem por Pablo César »

Maligno escreveu:Não entendo por quê você utiliza RunWAPICmd() diretamente, se existem as funções da biblioteca que fazem todo o trabalho por você de forma mais fácil e segura.
Lembro deste puxão de orelhas (acho que merecido) pois tenho aind aum vício de utilizar o WAPI.EXE como RUNTIM e não usufruir da WAPI.LIB. E estou mudando os chamado das funções da WAPI para acesso direto.

Deram certo a compilação e execução na utilização das funções:

GETMYHANDLE()
WINDOW2TOP()
FLASHTBAR()

Mas quando precisei compilar meu aplicativo para uso do SENDTORECYCLEBIN() não deu certo, dando a seguinte mensagem de erro na link-edição:

BLINKER : 1115 : LOCAR12.OBJ(LOCAR12) : ´SENDTORECY´ : unresolved external

Sei que esse erro deu porque não encontrou a função na LIb ou em lugar algum. Mas a minha sintaxe de link-edição é correta e fiz assim:

BLINKER FI %1,__WAIT,ERRORSYS,HELP,TIMESLIC LIB CT,WAPI

Acredito que este tipo de erro deveu-se a que o nome da função é muito grande ou seria porque não foi declarada essa função para ser interpretada no procedimento que foi criada a WAPI.LIB ?.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
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 »

E estou mudando os chamado das funções da WAPI para acesso direto.
As funções da biblioteca tanto fazem a chamada da forma sempre correta (você não precisa se preocupar com a formatação) como também faz o tratamento automático do retorno, se houver. Você não precisa esquentar a cabeça com nada. E até fica parecendo que acessar a API do Windows é natural para o Clipper. :)
Mas quando precisei compilar meu aplicativo para uso do SENDTORECYCLEBIN() não deu certo, dando a seguinte mensagem de erro na link-edição:

BLINKER : 1115 : LOCAR12.OBJ(LOCAR12) : ´SENDTORECY´ : unresolved external
Que bom que você resolveu finalmente abandonar o RTLink. Vai ver só. Ficará muito melhor daqui pra frente.

Mas o nome da função está completamente errado. O correto é Del2RecBin(). Infelizmente, com a limitação dos nomes dos símbolos em Clipper para 10 caracteres, tenho que inventar nomes mais curtos. Aliás, há vários casos semelhantes. Veja o README.
BLINKER FI %1,__WAIT,ERRORSYS,HELP,TIMESLIC LIB CT,WAPI
Se você usar a função BliCPURel() do próprio BLinker, não precisará mais da função FreeTSlice(). Seu funcionamento é semelhante, com a vantagem de também funcionar no CLD, o que não acontece com a FreeTSlice().
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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 »

Acabo de detectar um erro na função SetWinSSav(). Nem se pode chamar de erro, propriamente. Uma falha. Se desativar o protetor de tela no XP, ele realmente desativa, mas ao reiniciar a máquina, ele volta ao estado anterior. É fácil observar. Ao mudar para desabilitado, vendo nas "propriedade" do DeskTop, nota-se se que o protetor continua configurado. No Windows 98, entretanto, não acontece. Ao desabilitar o protetor de tela, ele muda o protetor para "nenhum".

Mas como o programa Clipper sempre vai executar essa verificação e desativar se estiver ativado, o problema não será sentido em tempo de execução deste programa. Mas ainda assim, vou verificar isso. Se for coisa simples, até posso alterar, mas não é crítico. Nem causa prejuízo.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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á

Mensagem por Pablo César »

Maligno escreveu:Que bom que você resolveu finalmente abandonar o RTLink.
hihi não fique tão feliz, ainda devo fazer várias mudanças, principalmente a instalação do BLINKER Versão 7 pois estou com a 5.10. Ora também como disse em outras ocasiões, eu utilizo o BLINKER mas para certos módulos. No entanto tenho conciência que o BLINKER é muito melhor que o RTLINK (mas tenho que fazer adaptabilidades no meu CT.LIB) para que funcione bem com o BLINKER. Você inclusive mencionou no seu TODO LIST:
Remover a dependência das bibliotecas CATools e NanFor
Ao quê se refere você disto ?
Mas o nome da função está completamente errado. O correto é Del2RecBin().
Ahhh era como tinha pensado mesmo, até ví esse nome no seu PRG mas pensei que fosse só exemplo. Então podemos considerar que tais exemplo estão também incorporados na WAPI.LIB ? Ousimplesmentye coincidiu ? Eu tenho o costume de ler diretamente no WAPI.C, que alias a sua documentação é realmente fantástica (você é muito detalhista, gosto disso colega). Mas será que seria muito confuso mencionar as SWITCHES e ao lado como funções da LIb ?
Se você usar a função BliCPURel() do próprio BLinker, não precisará mais da função FreeTSlice()... a vantagem de também funcionar no CLD
Ahhh bom ter mencionado.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
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 »

Ao quê se refere você disto ?
Quero deixar a WAPI independente de qualquer outra LIB. É isso.
Então podemos considerar que tais exemplo estão também incorporados na WAPI.LIB ?
Mas de quais exemplos você está falando? Não tem exemplo nenhum no ZIP.
Mas será que seria muito confuso mencionar as SWITCHES e ao lado como funções da LIb ?
O utilitário WAPI.EXE tem seus switches que nada têm a ver com as funções da biblioteca. Portanto, prefiro manter essas descrições separadas. Até porque, os comentários que existem em WAPI.C estão lá apenas por quê eles têm que existir. Mas sempre peço pra usarem o README.TXT da biblioteca para se nortearem.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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á

Mensagem por Pablo César »

Maligno escreveu:
Então podemos considerar que tais exemplo estão também incorporados na WAPI.LIB ?
Mas de quais exemplos você está falando? Não tem exemplo nenhum no ZIP.
Cómo não ? Tem sim:

\LIB\APP\APPSINFO.PRG
\LIB\APP\APPTITLE.PRG
\LIB\APP\DIRORIGN.PRG
\LIB\APP\FLASHBAR.PRG
\LIB\APP\KILLAPPL.PRG
\LIB\APP\MYHANDLE.PRG
\LIB\APP\SETBUTNX.PRG
\LIB\APP\SETSTART.PRG
\LIB\APP\SETTASKB.PRG
\LIB\APP\WIND2TOP.PRG
\LIB\FILE\DEL2RBIN.PRG
\LIB\FILE\MAKEPATH.PRG
\LIB\FILE\SEEKPATH.PRG
\LIB\FILE\UNIQFNAM.PRG
\LIB\GENERIC\COMPATIB.PRG
\LIB\GENERIC\COMPVLRS.PRG
\LIB\GENERIC\GETHDINF.PRG
\LIB\GENERIC\RANDOMIC.PRG
\LIB\INTERNET\DOWNFILE.PRG
\LIB\INTERNET\ISINTERN.PRG
\LIB\OS\GETCLIPB.PRG
\LIB\OS\OS_STATE.PRG
\LIB\OS\SCRSAVER.PRG
\LIB\OS\SETCLIPB.PRG
\LIB\OS\SYS_INFO.PRG
\LIB\OS\WIN_INFO.PRG
\LIB\PRINTER\DEFPRINT.PRG
\LIB\PRINTER\GETPRINT.PRG
\LIB\PRINTER\PRINTFIL.PRG
\LIB\REGISTRY\DELETREG.PRG
\LIB\REGISTRY\READ_REG.PRG
\LIB\REGISTRY\WRITEREG.PRG
\LIB\SOUND\PLAYWAVE.PRG
\LIB\STRING\LTRIMSTR.PRG
\LIB\STRING\QUOTESTR.PRG
\LIB\STRING\XALLTRIM.PRG
\LIB\WAPIFCTS\EXECWAPI.PRG
\LIB\WAPIFCTS\READRETF.PRG
\LIB\WAPIFCTS\WAPIERRO.PRG
\LIB\WAPIFCTS\WAPISETS.PRG

Mas desconsidere a minha pergunta, pois o que eu ví não tem a haver. Quero dizer a função Del2RecBin() não é o mesmo nome que o DEL2RBIN.PRG.
Mas sempre peço pra usarem o README.TXT da biblioteca para se nortearem.
Okay, you are right !
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
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 »

Cómo não ? Tem sim:
Mas esses arquivos não são exemplos. São fontes. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder