Página 1 de 1
Executar rotina após x minutos
Enviado: 12 Jan 2015 11:49
por rbonotto
Ola,
Eu tinha em clipper uma função que detectava que se o usuário não teclasse nada por xtempo ela iria entrar e rodar a função que eu indicasse,
era ótimo para colocar o nome do cliente passando na tela ( tipo um protetor de tela).
Mas esta função era da ptool50 ( ou newget50) que é incompativel com harbour.
Teria alguma função em harbour que seria semelhante ?
Abraços,
Executar rotina após x minutos
Enviado: 12 Jan 2015 13:03
por rochinha
Amiguinho,
Estas funções geralmente trabalham em background e devem levar em consideração teclas presionadas e eventos de mouse.
Com multitasking do Harbour com certeza você mesmo consiga simular este processo.
Executar rotina após x minutos
Enviado: 12 Jan 2015 15:06
por Jairo Maia
Olá Pessoal,
Controlo tudo em meus sistemas desta forma. Mas vale ressaltar que realmente as variáveis de controle devem ser publicas, como o caso das variáveis publicas deste exemplo. Também lembro que o retorno da NextKey() depende de como está setado SET EVENTMASK. Mas veja se ajuda:
Código: Selecionar todos
Function Main()
Local cAlgo := Space( 30 )
Public nTask, nIdle
Public nTimeEspera := 5 // (tempo em segundos)
PuBlic nTempo := ( Seconds() + nTimeEspera )
Clear Screen
nTask := HB_BackGroundAdd( {|| ChecaTempoCorrido() } )
nIdle := HB_IdleAdd( {|| HB_BackGroundRun( nTask ) } )
@ 2,2 Say "Tecle Algo: " Get cAlgo
Read
HB_BackGroundDel( nTask ) // coloque antes de sair do sistema
HB_IdleDel( nIdle )
Return Nil
FuncTion ChecaTempoCorrido()
Local nRow, nCol
If ( NextKey() > 0 )
nTempo := Seconds()
ElseIf Seconds() >= ( nTempo + nTimeEspera ) // se ficou ocioso pelo tempo determinado...
HB_BackGroundDel( nTask ) // remove as acoes da Idle evitando recursividade
HB_IdleDel( nIdle )
nRow := Row() // linha do cursor
nCol := Col() // coluna do cursor
//////////////////////////////////////////////////
@ 5,2 Say "Coloque aqui a chamada para sua Funcao"
@ 6,2 Say Time()
//////////////////////////////////////////////////
nTempo := Seconds() // atualiza nTempo
nTask := HB_BackGroundAdd( {|| ChecaTempoCorrido() } ) // reativa a idle
nIdle := HB_IdleAdd( {|| HB_BackGroundRun( nTask ) } )
SetPos( nRow, nCol ) // restaura cursor
EndIf
Return Nil
Executar rotina após x minutos
Enviado: 14 Jan 2015 19:59
por rbonotto
Pessoal, mais uma vez obrigado pela atenção :{
Funcionou belezinha Jairo !
O Harbour é impressionante de recusrsos mesmo.
Executar rotina após x minutos
Enviado: 14 Jan 2015 20:09
por rbonotto
Aproveitando...
Procurei aqui no fórum e não encontrei, existe a possibilidade de colocar uma figura ( .jpg, gif, bmp, etc) para aparecer
na tela usando o harbour no modo console ?
Abraços,
Executar rotina após x minutos
Enviado: 07 Jun 2015 18:53
por fladimir
Olá pessoal, o meu funcionou em partes...
Coloquei como o Jairo postou e na parte q ele menciona pra colocar a chamada da função coloquei..
TesteFTP()...
Ok funciona com relação a esperar X segundos e entrar na rotina... mas o q ocorre é q AMARRA o processamento do sistema e no meu ponto de vista não poderia ocorrer... explico...
Se eu fizer um EXE a parte (vamos chamar de EXE1) e deixar ele rodando e abrir em outra janela outro EXE (vamos chamar de EXE2) vou trabalhando normal no EXE2 enquanto o o EXE1 vai processando, sem 1 interferir no outro...
Seria isto q eu queria fazer usando o exemplo do Jairo e o q ocorre é q qdo a Thread é startada amarra a rotina principal... ou seja... enquanto ta rodando a função q é chamada pela thread fica praticamente sem poder trabalhar...
Teria algum parâmetro ou algo do tipo pra não acontecer isto?
[]´s
Executar rotina após x minutos
Enviado: 07 Jun 2015 19:20
por fladimir
resolvi da seguinte forma...
qdo é pra chamar minha função coloquei pra chamar meu EXE com parametro em background assim:
MyRun( 'MeuSistema PARAMETRO', .F.)
Ai o MyRun roda em background e chama meu sistema q qdo ve o parametro chama a função TESTEFTP
Ai um não afeta no outro e funciona como preciso...
Mas isso foi 1 alternativa acredito q deva ter outra forma...
código do MyRun (link já com explicações)
[]´s