Página 23 de 51

Enviado: 06 Ago 2007 22:38
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.

Enviado: 06 Ago 2007 23:03
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.

Enviado: 06 Ago 2007 23:29
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. :)

Enviado: 06 Ago 2007 23:39
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.

Enviado: 07 Ago 2007 01:10
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?

Enviado: 07 Ago 2007 07:49
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.

Enviado: 07 Ago 2007 08:56
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.

Enviado: 07 Ago 2007 09:46
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. :)

Enviado: 07 Ago 2007 09:50
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 ?.

Enviado: 07 Ago 2007 10:01
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().

Enviado: 07 Ago 2007 10:21
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.

Enviado: 07 Ago 2007 10:29
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.

Enviado: 07 Ago 2007 10:57
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.

Enviado: 07 Ago 2007 15:03
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 !

Enviado: 07 Ago 2007 15:12
por Maligno
Cómo não ? Tem sim:
Mas esses arquivos não são exemplos. São fontes. :)