Página 1 de 1

Deixar o prog carregado na memória

Enviado: 05 Dez 2006 15:21
por Bisteca
Olá, amigos. Alguém sabe como faço para deixar um programa carregado monitorando uma certa condição e deixar o micro livre para executar outra aplicação?

Obrigado a todos

Enviado: 05 Dez 2006 15:47
por gvc
Explique melhor o que vc quer fazer.

Com o windows vc pode abrir várias aplicações (não que vá funcionar uma maravilha) e deixá-las rodando.

Dependendo do que vc quer fazer, o clipper/dos não é a melhor solução.

rodar a aplicação

Enviado: 06 Dez 2006 11:07
por Bisteca
é o seguinte: a máquina tem DOS e roda uma aplicação clipper e preciso fazer com que um outro programa monitore quando a primeira aplicação chegue a uma certa condição... (as duas aplicações são em clipper)

Obrigado

Enviado: 06 Dez 2006 13:30
por gvc
A máquina não esta rodando uma janela windows? Esta rodando DOS puro?
Em clipper/dos não tem como fazer isso (que eu saiba).
Programas TSR normalmente são feitos em linguagens que consomem menos espaço de memória e recursos da máquina. C/Assembler/Pascal por exemplo.
Talvez vc tenha que reavaliar seu projeto para resolver isso somente com clipper.
Explique o que esta fazendo. Talvez o pessoal aqui do forum possa ajudar a encontrar um modo de resolver isso. (Se achar melhor, pode mandar um e-mail).

Enviado: 06 Dez 2006 14:31
por kiko
se vc ta com DOS puro, nao da, pq ele eh monotarefa: soh roda uma aplicacao de cada vez....
se vc esitver em dos puro, vc pode fazer a propria aplicacao chamar a outra...
mesmo que vc esteja em windows, nao sei se vai dar pra fazer uma aplicacao em clipper puro rodar em background...imagino q em xHarbour de pra fazer, mas nao sei informar...

Enviado: 06 Dez 2006 16:30
por rochinha
Amiguinho

Isto é possivel no Clipper puro bastando para isto colocar em um ponto de seu programa:

RUN COMMAND.COM

Mas isto não é aconselhavel pois não lembro se para retornar usava-se o EXIT normal.

Com Blinker sei que isto é possivel pois usava um de seus recursos para sair ao prompt fazer algumas coisas e retornar com baixo consumo de memória.

Código: Selecionar todos

FUNCTION Shell2DOS()
   enable  = .t.
   disable = .f.
   save screen to SwapDemo
   i = SWPUSEEMS(enable)
   i = SWPUSEXMS(enable)
   i = SWPUSEUMB(enable)
   i = SWPCURDIR(enable)
   i = SWPVIDMDE(enable)
   ? "Entrando no DOS...(Digite EXIT para retornar)"
   // Novo Prompt
   i = SWPSETENV("PROMPT=[ Rochinha ]$p$g")
   keystr = "'cls'{enter}'dbase'" // Comando automatico abria o dBase
   swpkeybrd(keystr)
   * status = SWPRUNCMD(ChildProg, Memory, Shell Directory, Temporary directory)
   i = SWPRUNCMD( "", 0, "", "")
   rest screen from SwapDemo
   RETURN(.T.)

Enviado: 06 Dez 2006 16:46
por vagucs
Bom,

Apesar do DOS ser MONOTAREFA você pode disparar diversos programas com ele, isso carregando o programa de forma residente, ou seja, vc instala na interrupção do relogio do sistema uma chamada a uma pequena rotina sua que faz uma chamada em determinado caso ao seu sistema.

Mas como citado, colocar o programa rodando mesmo em clipper é possivel, não falo que não, pois sempre existe alguem que consegue fazer, mas os programas em clipper consomem muita memoria, a dica dada pelo rochinha é valida, mas quando vc dispara o outro comando a sua aplicação vai parar esperando a resposta do outro sitema. Logo, se vc quer fazer um programa ficar num while sem interonper outro processo, com o clipepr vai ser meio dificil.

No meu site tem uma lib que vi onde vc colocar o programa clipper rodando como o NG, uma tecla de atalho chama o programa, independente do que vc esteja fazendo na hora, mas assim mesmo seu programa fica suspenso.

Tem a BGEVENTs tambem no meu site, onde vc pode colocar diversas rotinas em clipper rodando ao mesmo tempo dentro do seu sistema, mas o programa fica mais lento.

Acho uma forma valida e prudente a de criar esta rotina em xHarbour e carregar no iniciar do windows ou mesmo criar um servico em xHarbour, vc vai programar como em clipper mesmo, porem o aplicativo fica totalmente 32bits e vc vai conseguir fazer o que quer, nunca programei servicos no Windows com xHarbur, mas em linux eu faço isso demais da conta, já faz parte da minha vida e funciona muito, mas muito bem mesmo.

Quando vc programa um serviço, lembre de ficar de olho no consumo de CPU, se não a coisa fica "cagada", ai vira um M****, mas no geral colocar mais de um programa rodando ao mesmo tempo funciona bem em Windows XP e Linux, apesar de serem sistemas que simulam uma multitarefa e isso não vem ao caso, funciona bem e acho que isso já te ajuda a clarear as ideias.

Enviado: 09 Dez 2006 00:54
por DENTINHO
continuando o assunto:

Tambem preciso de um monitoramento de uma pasta tipo o observe da impressoara DARUMA. Ele monitora uma pasta onde voce envia o comando da impressora.

Seria possivel criar um exe em clipper e alojar no modo relogio para monitorar uma pasta?

Enviado: 09 Dez 2006 00:59
por vagucs
Como discutido antes, impossivel nada é relativo a programação, porem carregar um programa em clipper excede e muito os limites de memoria q o DOS impoem, entao, colocar rodando mesmo acho muito dificil, mas porque vcs nao fazem um programa em xharbour para isto???

O PRWIN que está no meu site é xHarbour puro.

Enviado: 09 Dez 2006 01:26
por rochinha
Amiguinho

O Clipper rodando da forma como voce quer manterá sua maquina um tanto escravizada, mesmo rodando em janela, e a verificação que voce deseja fazer consome ticks da cpu.

Isto não quer dizer que um programa feito para Windows não faça o mesmo, um exemplo é o emulador Bematech que quando ativo consegue ocupar todo o processamento, monitorando o que eu não sei.

Se voce apenas quer monitorar uma pasta sugiro usar programas como o do Vagner uo fazer um sendo que este será apenas um monitor, um pequeno do..while por exemplo.

Eu montei um serviço usando o Fivewin for Harbour 2.4 que fica escondido tirando fotos do desktop e armazenando a imagem capturada em formato JPG que é visualizado por outro aplicativo afim de saber o que o usuario esta aprontando na maquina.

Mesmo com esta tarefa o mesmo ainda assim us nos momentos de pico até 10% mesmo fazendo uma verificação a cada 30 segundos imagine se eu diminuisse para tempo real as maquinas parariam.

Se quizer se aventurar com Fivewin e Harbour com este meu código voce poderá adapta-lo para o seu uso.

Mas ainda assim, esqueça de usar o Clipper para tal tarefa, voce conseguirá apenas irritar seus usuários.

Enviado: 09 Dez 2006 01:36
por vagucs
Concordo com o rochinha e tambem concordo que nao sei o que o emulador bematech fica fazendo para ser tão pesado, kekekeke...