Página 11 de 51

Enviado: 25 Mar 2007 19:26
por Pablo César
Eolo escreveu:Uma curiosidade (Poka): por que vc usa um arquivo batch pra rodar o seu sistema ao invés de deixar tudo dentro de um EXE só?
Agora percebo mesmo que você está confundido-me com o colega POKA. MIM SER PABLO, NAUM POKA (eu pouca sombra talvez...), hehehe.
Eolo escreveu:Se é porque tava dando estouro de memória, talvez uma saída seja fazer como eu faço: overlays internos. Eu forço a compilação e linkedição em módulos pequenos, OVERLAYados, o EXE pode ter 2Mb, mas roda até em P1 com 32 de RAM...
Colega... se eu te digo... que não sei fazer isto e que há tempos atrás não tinha conhecido este FORUM, eu não soube fazer overlays.
Eolo escreveu:O cliente X não quer mais o módulo Y? É só desabilitar ele no menu com um asterisco...
Mas também me dá mais flexibilidade na hora de excluir algum módulo, sem ter que compilar. Desabilito e pronto (tanto na BATCH como deletando arquivos, como configurando pelo sistema. E também sempre pensei que se eu colocasse todos esse módulos juntos em um só executável, iria ficar mostruoso. Assim também posso personalizar, facilmente sem ter que RE-COMPILAR. Agora se quiser me explicar como é feito uma compilação com OVERLAYS (sei que agora é ultrapassado)... mas é boms saber. Só que te pediria que você abra um novo tópico para não misturarmos os assuntos e por respeito ao colega MALIGNO, também.

Um clip-abraço

Pablo (falouuuuu... ??) :)Pos

Enviado: 25 Mar 2007 19:39
por Eolo
Ops, desculpe a troca de nomes...

Sim, vou abrir um tópico Overlays, aí falamos dele lá.

Eolo

Enviado: 25 Mar 2007 20:29
por Pablo César
Maligno escreveu:Depois de pesquisar e procurar pelas melhores alternativas, conclui o trabalho e incorporei o novo recurso ao WAPI...
FI-COOUUU BOOOMMM !. Gostei, eu tinha voltado a utilizar PING, mas este achei muito melhor porque tem um verdadeiro TIMEOUT.
Maligno escreveu:No caso de não ser informada nenhuma URL de teste, será utilizada uma página inexistente do Google, a fim de obter como retorno uma outra página de erro "404", que sempre é pequena (+/-1KB).
Esta opção, achei muito criativo da tua parte.
Maligno escreveu:E como é mais fácil o inferno esfriar do que o servidor do Google ficar down, é certo que essa página virá se houver conexão.
kakaka, tem razão mesmo !. Eu também tinha escolhida como preferida como site alive.
Maligno escreveu:eu troquei a API do ActiveX por outra melhor, pude desenvolver um código mais controlado
Com esta nova API MALIGNO, ela te dará também melhores recursos para aquela questão de activar janelas minimizadas pelo handle (digamos) ?.

Muito legal esta nova opção, poderemos interagir pela INTERNET com o nosso sistema quase que de forma ONLINE... legal, legal mesmo !.

Um clip abraço MALIGNO, parabéns. :)Pos

Enviado: 26 Mar 2007 00:51
por Maligno
Pablo César escreveu:Gostei, eu tinha voltado a utilizar PING, mas este achei muito melhor porque tem um verdadeiro TIMEOUT.
Realmente, o PING (ECHO) tem esse problema. E soma-se a isso o problema do U2F, que era o cachê, que acabava retornando um falso positivo para o teste de conexão.
Esta opção, achei muito criativo da tua parte.
Eu procurei por alguma página pequena. Mas tive a idéia de pegar uma mensagem de erro, que é sempre bem pequena. :)
Eu também tinha escolhida como preferida como site alive.
Tem outras: Microsoft, casa branca, Pentágono, etc. Mas o google é mais "popular". :)
Com esta nova API MALIGNO, ela te dará também melhores recursos para aquela questão de activar janelas minimizadas pelo handle (digamos) ?.
Não. A API nova a que me refiro é a WinINet, que presta apenas serviços relacionados à Internet. Ela me pareceu mais flexível que a URLMon, que é usada no U2F. Até fiz um programa melhor usando a URLMon, mas não ficou lá muito bom. A WinINet se encaixou melhor. Ela conta, inclusive, com vários outros recursos, como FTP, por exemplo.
Muito legal esta nova opção, poderemos interagir pela INTERNET com o nosso sistema quase que de forma ONLINE... legal, legal mesmo !.
Só ficou faltando uma coisinha pra ficar realmente muito boa: a interação gráfica com o Clipper, para poder ser feita, por exemplo, uma barra de progresso. Ainda não pude ver muita coisa a respeito, mas a princípio, não será possível montar uma espécie de callback com o Clipper. Se desse, seria ótimo. Não faltaria mais nada. Infelizmente, essa semana foi bem puxada. Não me deram paz. Por esse motivo não pude entregar a atualização do WAPI antes. E, lógico, também não pude pesquisar mais a respeito desse esquema de callback. Mas isso me interessou e quero ver se consigo um tempo pra ver isso mais de perto. Não pude sequer responder às mensagens que você me enviou em private. Eu não tive tempo mesmo. Peço desculpas por isso. Vou respondê-las neste exato momento. :)

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

Enviado: 26 Mar 2007 05:19
por Maligno
Tive de fazer uma pequena correção no WAPI. Fui fazer um teste no Windows 98 e percebi que havia um erro de "timing" no WAPI ao tentar apagar alguns arquivos temporários. Nada grave. Nenhum serviço estava sendo feito errado. O problema é que "lixo" se acumulava à toa e também um arquivo de retorno de resultado podia não ser aberto, por ainda estar ocupado pelo WAPI, o que gerava um erro. A função de leitura desse arquivo só precisava de mais um "tempinho" pro arquivo ser liberado. Mas no XP isso não acontecia.

O ZIP atualizado já está disponível.
Link para download: http://buzinello.com/download/wapi.zip

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

Enviado: 26 Mar 2007 09:04
por Pablo César
MALIGNO,

Eu fiz o download de ultimo WAPI.ZIP. Eu guardo todas as versões em pastas diferenciadas pela sua versão (de acordo a tua disponibilização aqui no FORUM), e me pareceu que não foram mudados de tamanho, data e hora os arquivos: WAPI.EXE, WAPI.C, WAPI.LIB. Será que você não errou de versão ao disponibilizá-lo ao público, nesta última ?.

Enviado: 26 Mar 2007 10:08
por Maligno
Mantive data e hora como a penúltima versão (25/03/2007;01:00), mas repare que o tamanho da LIB mudou. Agora é 56.320 bytes. O WAPI.EXE mesmo não mudou, já que o problema estava numa função da LIB.

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

Enviado: 26 Mar 2007 10:11
por Pablo César
Retornando um pouco aquela questão de verificar se a sessão foi aberta anteriormente no mesmo PC. Venho insistindo ao MALIGNO à criação de uma nova função que permita abrir (melhor dizer: deixar ativa) uma janela através do HANDLE que servirá como parâmetro obtido da função -GETMYHANDLE do WAPI. Se isto se tornar realidade, penso que a utilização do WAPI para essa questão de MULTI SESSÃO, será de grande vital para RE-ABRIR chamando apenas a sessão que estava aberta e minimizada. Assim como é feito nos aplicativos GUI. Que mesmo que o usuário tente abrir uma 2ª sessão do mesmo aplicativo, o API nem precisa dar mensagem alguma, apenas reabre a sessão deixando-a ativa em exibição e execução. Por isso que eu aposto na solução apresentada pelo MALIGNO com os recursos das APIs do WINDOWS através do WAPI. Esta seria un dos melhores recursos que o WAPI teria, pois irá forçar a chamada da janela que estava minimizada e o usuário não tinha percebido ao clicar novamente no atalho que chamaria por 2ª vez o aplicativo. Daí então também não será necessário ter que pedir pro usuário que mude a tela de exibição. Porque seria só chamar a janela para que fique ativa através dessa nova função do WAPI.

Ja não ocorreu que o usuário diz que a janela DOS do aplicativo sai quando por exemplo o antivirus avisa que precisa ser atualizado ou qua faz qualque interrupção de tela e é afetado a exibição do nossos aplicativos DOS. Fazer o quê...? temos nos adaptar a cada situação. Mas uma coisa digo e que aqui poucos tem a humildade de dizer:

Aplicativos ou bibliotecas geralmente feitas em outra linguagem, só fortalecem a qualidade dos nossos aplicativos em DOS. E o MALIGNO, tem feito uma grandissima contribuição para facilitar nossa vida com CLIPPER. Ao contrário dele, outros dizem para quê ? Seria mais conveniente mudar de linguagem e pronto !. E não estão preocupados em melhorar e/ou ajudar o desenvolvimento em MS-DOS que muitas vezes é justificado a opção em DOS.

MALIGNO, manda ver com essa nova função que estou te pedindo... irá servir para muitos colegas que ainda persistem.

Obrigado, :)Pos

Enviado: 26 Mar 2007 10:16
por Pablo César
Maligno escreveu:mas repare que o tamanho da LIB mudou. Agora é 56.320 bytes.
Desculpe insistir, mas o tamanho da versão anterior também é de 56.320 bytes. Mas se você está dizendo que manteve a data e hora igual, então não tá aqui quem falou...

Um clip-abraço :)Pos

Enviado: 26 Mar 2007 11:04
por Maligno
Pablo César escreveu:
Maligno escreveu:mas repare que o tamanho da LIB mudou. Agora é 56.320 bytes.
Desculpe insistir, mas o tamanho da versão anterior também é de 56.320 bytes. Mas se você está dizendo que manteve a data e hora igual, então não tá aqui quem falou...
No dia 25 soltei a LIB com a inclusão do URF2FILE. A LIB deste pacote deve ser ligeiramente menor que 56.320. Se você guarda todos os ZIPs, por favor, confira. O ZIP que soltei nesta madrugada tem uma LIB com exatos 56.320 bytes. É a que contém a correção da função. Não é isso?
Veja: estou falando do WAPI.LIB e não do WAPI.EXE.

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

Enviado: 26 Mar 2007 11:25
por Pablo César
Maligno escreveu:O ZIP que soltei nesta madrugada tem uma LIB com exatos 56.320 bytes. É a que contém a correção da função.
Isso mesmo, tem esse tamanho (56.320 bytes)
Maligno escreveu:No dia 25 soltei a LIB com a inclusão do URF2FILE. A LIB deste pacote deve ser ligeiramente menor que 56.320.
Negativo. Nessa versão (de acordo o arquivo WAPI.LIB) estava também com (56.320 bytes).

Talvez, se você me dizer em que linha você alterou, porque o WAPI.C teria que estar diferente, não é mesmo ?. Pois estão IGUAIS em tamanho (as duas ultimas versões), ambos WAPI.C tem exatamente 78.000 bytes.

Só não comparei ainda, mas se você me dizer em qual linha você começou +/- a mudar ?. Mas me parece igual no WAPI.C

:|

Enviado: 26 Mar 2007 11:38
por Maligno
Pablo César escreveu:Só não comparei ainda, mas se você me dizer em qual linha você começou +/- a mudar ?. Mas me parece igual no WAPI.C
Não. O WAPI.C não tem nada a ver. Foram alterados os arquivos READRETF.PRG (linha 33 - entra num while, que antes não existia) e EXECWAPI.PRG (linha 58 - entra num while, que antes não existia).

Mas cho que o ZIP está correto. Baixei de novo e conferi os fontes. Gerei a LIB de novo e comparei com o CRC32 da versão antiga. Bateu. Fique tranqüilo.

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

Enviado: 26 Mar 2007 11:50
por Pablo César
Ahhh OK, já percebí...

Código: Selecionar todos

if EraseWAPI()
   nSecs := Seconds()
   while FErase(cWAPI) < 0 
... assim por diante

Obrigado pelo esclarecimento. :)Pos

Enviado: 27 Mar 2007 21:49
por Maligno
Pablo César escreveu:criação de uma nova função que permita abrir (melhor dizer: deixar ativa) uma janela através do HANDLE
Pois está pronto. Só pra efeito de organização, repito mais uma vez a lista de switches, com um asterisco prefixando o novo switch.

Código: Selecionar todos

  -DELETEREGISTRY:<fullKeyPath>;<entryName>;<resultFile>
  -FLASH:<times>[;<handle>]
  -GETAPPSINFO:<resultFile>
  -GETCLIPBOARD:<resultFile>
  -GETDEFPRINTER:<resultFile>
  -GETHDINFO:<resultFile>
  -GETMYHANDLE:<resultFile>
  -GETPRINTERS:<resultFile>
  -GETWINDOWSINFO:<resultFile>
  -HIBERNATE
  -PLAYWAVE:<source>
  -POWEROFF
  -PRINT:<printerName>;<inputFile>;<reportTitle>;<resultFile>
  -READREGISTRY:<fullKeyPath>;<entryName>;<resultFile>
  -REBOOT
  -SETAPPTITLE:<title>
  -SETBUTTONX:<on|off|del>
  -SETCLIPBOARD:<valueType>;<value>;<resultFile>
  -SETSTARTBUTTON:<hide|show|disable|enable>
  -SETTASKBUTTON:<hide|show>[;<handle>]
  -SUSPEND
  -URL2FILE:<URL>;<fileName>;<timeOut>;<resultFile>
* -WINDOW2TOP:<handle>
  -WRITEREGISTRY:<fullKeyPath>;<entryName>;<valueType>;<value>;<resultFile>
O novo recurso funciona normalmente em kernel NT e Win9x. Só há um inconveniente. Em Windows NT/XP, a janela DOS, mesmo que esteja em tela cheia, será restaurada normalmente. Todas as demais janelas desaparecerão e o DOS voltará a vida, como se tivesse sido executado. Entretanto, mesmo depois de muito pesquisar, não foi possível conseguir o mesmo em Windows 98, se o DOS estiver em tela cheia. Só neste caso. Em modo janela ou mesmo um aplicativo GUI, a operação se completa como esperado.

A função de abstração, já incluída também, se chama Window2Top(<handle>). Detalhes no arquivo README.TXT da pasta WAPI\LIB.

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

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

Enviado: 28 Mar 2007 08:56
por Pablo César
Aleluiahh ! Muito, muito obrigado MALIGNO !. O problema parece sempre estar com o WIN98... Mas mesmo assim, é uma grande vitória já. Testei no meu sistema e ficou muito bom. Engraçado que no WIN98 o tempo de espera na execução da rotina através do RUNWAPICMD é muito mais rápido do que no WINXP. Como você disse no WINXP funciona tudo OK (transparentemente). Mas no WIN98, se estiver em TELA-CHEIA, não abre de forma ATIVA. Será que nessa tentativa de abrir a janela, a função poderia dar algum retorno (se VERDADEIRO ou FALSO) de acordo com o resultado ?. Ou não tem como retornar o resultado da operação ?. Porque se voltasse FALSO, ao menos eu dava uma mensagem para o usuário dizendo que deve clicar na sessão minimizada (e faria com que piscasse) para chamar atenção ao usuário com efeito visual.

Mas você é um GÊNIO !. Serio mesmo. Sabia que você ia conseguir...

Gracias, muchas gracias ! :)Pos :* -:] :{ :)) :D :)Pos