Segue código:
Código: Selecionar todos
#include "set.ch"
#include "inkey.ch"
PROCEDURE Main()
LOCAL nId1, nId2, nId3, nId4, nId5, nId6, nId7, n
LOCAL lActive := .F.
LOCAL nSpeed := 500
nId6 := HB_BackgroundAdd( { @Fecha_Auto(), 10 }, 15000 ) //Define a Tarefa e o Tempo
SET COLOR TO w+/B
CLEAR SCREEN
SET CURSOR OFF
@1,0 SAY Padc( "X H A R B O U R - Background and Idle Function Test.", MaxCol() )
DispInfo( "Tarefas Background definidas, mas nÆo rodando." )
SecondsSleep( 3 )
HB_BackgroundRun() // Rodando todas background tasks as q sejam SET BACKGROUND TASKS is ON
SecondsSleep( 3 ) // depois de 3 segundos
SET_ BACKGROUND TASKS ON // Ligando as Tarefas de Background q nÆo estejam definidas como OFF no xHarbour
@ 18, 02 SAY "Contador do Programa Principal: "
n := 0
DO WHILE .T.
@ 18, 32 SAY ++n
IF n % 1000 == 0
IF Inkey() == K_ESC
EXIT
ENDIF
ENDIF
// HB_BackgroundActive( nId7, lActive ) // Ativa ou Desativa nId7
// HB_BackgroundDel( nId5 ) // remove a Tarefa 5 do BackGround
IF n % 60000 == 0
// Muda o Tempo da nId6, ou seja, passa o parametro nSpeed (Tempo) para a Fun‡Æo q esta rodando em BackGround
//HB_BackgroundTime( nId6, nSpeed )
//@ 20, 55 SAY "Contador 02 Tempo = " + Str( nSpeed, 3 )
ENDIF
ENDDO
RETURN
*Fun‡Æo para mostrar mensagem
PROCEDURE DispInfo( cMsg )
LOCAL nOldRow := Row()
LOCAL nOldCol := Col()
IF cMsg == NIL
cMsg := ""
ENDIF
@ 23, 0 SAY PadC( cMsg, MaxCol() )
SetPos( nOldRow, nOldCol )
RETURN
*****************************
Function Fecha_Auto(vAguarda) // vem por parametro a quantidade de segundos até fechar
*****************************
If File("fecha.txt") // se achar o arquivo que é gerado assim que começa a baixar o FTP...
Mensag("O Sistema vai Fechar nessa estação em: " +str(vAguarda)+ " Segundos...") // mensagem na tela
for nI:=1 to vAguarda // quantidade de segundos a aguardar
MilliSec( 1000 ) // aguarda um segundo
Mensag("O Sistema vai Fechar nessa estação em: "+ STR(vAguarda-nI) +" Segundos...") // muda mensagem na tela
next
//Fim_Run() // finaliza a mensagem na tela
__Quit()
x:=.f.
return x
endif
//ThreadSleep( 15000 )
Return
Function MilliSec(Arg1)
Arg1:= Arg1 / 1000
Inkey(Arg1)
return
********************************
function MENSAG(Arg1, Arg2, Arg3)
local Local1, Local2
Local1:= SaveScreen(24, 0, 24, 80)
Local2:= Set(_SET_DEVICE)
set device to screen
if (PCount() == 0)
limpa()
RestScreen(24, 0, 24, 80, Local1)
return .T.
endif
if (!(right(Arg1, 1) $ "?!.ÿ"))
Arg1:= Arg1 + "."
endif
if (Arg2 = Nil)
@ 23, 0 say padc(Arg1, 80) color "R*/W"
else
@ 23, 0 say padc(Arg1, 80) color Arg2
endif
inkey(0.4)
Set(_SET_DEVICE, Local2)
RestScreen(24, 0, 24, 80, Local1)
Return .T.
Já tentei por o #include 'hbcompat.ch' e compilar mas da erro não encontra o SET BACKGROUND TASKS
Alguém sabe como obter o mesmo resultando no Harbour?
Sucesso!!!
:)Pos
