Page 1 of 1
Quit the program when time out (like screen saver)
Posted: Sat Mar 10, 2012 3:44 pm
by dutch
Dear All,
My customer ask for automatic quit or logout after specific time (like screen saver).
How can I do it? Any idea most welcome..
Regards,
Dutch
Re: Quit the program when time out (like screen saver)
Posted: Sat Mar 10, 2012 4:10 pm
by WilliamAdami
hello, see my class tinativo()
William Adami
Code: Select all
* exemplo do uso da classe Tinativo
* Apos um tempo de inatividade do mouse
* e do teclado chama uma funcao qualquer.
#include "fivewin.ch"
static oWnd
*************
function main
*************
nTempo_espera:=10 //Tempo a ser esperado ate chamar a funcao
cNome_funcao:="LOGOFF()" //nome da funcao a ser chamada quando
//chegar no tempo de espera
lTimercontinua:=.f. //se apos executar a funcao , continua monitorando
//a inatividade do mouse e teclado.
define window oWnd title "Teste de teclado e mouse"
activate window oWnd on init tinativo():new(nTempo_espera,cNome_funcao, lTimerContinua)
return NIL
function logoff
msgalert("AQUI ENTRA SUA FUNCAO DE LOGOFF !","AVISO")
return nil
*****TINATIVO.PRG
*****************************************
* CLASSE PARA DETECTAR SE O SISTEMA ESTA
* INATIVO POR (N) SEGUNDOS, E SE ESTIVER,
* CHAMA UMA FUNCAO (PODE SER UMA FUNCAO
* DE LOGOFF , DESCANSO DE TELA , ETC..)
*****************************************
* AUTOR DA FUNۂO ORIGINAL :
* POMPEO (GUARATINGUETA)
* MIGRAۂO DA FUNۂO PARA CLASSE:
* WILLIAM DE BRITO ADAMI
*****************************************
#include "fivewin.ch"
CLASS TINATIVO
DATA nTimeInpAntes
DATA nTimeInpDepois
DATA cTimeAtu
DATA nTempo
DATA oTimerTime
DATA cFunc
DATA lContinuar
METHOD NEW( nTime, cFuncao, lContinua ) CONSTRUCTOR
METHOD ver_tempo()
ENDCLASS
**********************
METHOD new(ntime,cFuncao,lContinua) CLASS TINATIVO
**********************
::cfunc:=cfuncao
::ntempo:=ntime
::lContinuar:=lContinua
::oTimerTime := TTimer():New( 1000, { || ::VER_TEMPO() } )
::oTimerTime:Activate()
::cTimeAtu := time()
::nTimeInpAntes := getInputState() // 0 = erro
return self
*************************
METHOD VER_TEMPO CLASS TINATIVO
*************************
::nTimeInpDepois := getInputState()
if ( ::nTimeInpDepois - ::nTimeInpAntes ) > 0
::nTimeInpAntes := getInputState()
::cTimeAtu := time()
endif
if ( CONVTIME(time()) - CONVTIME(::cTimeAtu) ) > ::ntempo
::oTimerTime:DeActivate()
aux:=::cfunc
* aqui executa a funcao
&aux
if ::lContinuar
::oTimerTime:Activate()
::cTimeAtu := time()
endif
endif
return NIL
FUNCTION CONVTIME(ZZ)
Z:=(VAL(LEFT(ZZ,2))*360)+(VAL(SUBSTR(ZZ,4,2))*60)+VAL(RIGHT(ZZ,2))
RETURN Z
**----------------------------------------------------------------------
#pragma BEGINDUMP
#define _WIN32_WINNT 0x0500
#define WINVER 0x0500
#include "windows.h"
#include "hbapi.h"
HB_FUNC( GETINPUTSTATE )
{
LASTINPUTINFO lpi;
lpi.cbSize = sizeof(LASTINPUTINFO);
if (!GetLastInputInfo(&lpi))
{
hb_retni(0);
}
hb_retni(lpi.dwTime);
}
#pragma ENDDUMP
Re: Quit the program when time out (like screen saver)
Posted: Mon Mar 12, 2012 4:55 am
by dutch
Dear William,
Thanks for nice class and example. It's really useful for me.
Regards,
Dutch
Re: Quit the program when time out (like screen saver)
Posted: Sat Apr 11, 2020 5:29 pm
by Silvio.Falconi
WilliamAdami wrote:hello, see my class tinativo()
William Adami
Code: Select all
* exemplo do uso da classe Tinativo
* Apos um tempo de inatividade do mouse
* e do teclado chama uma funcao qualquer.
#include "fivewin.ch"
static oWnd
*************
function main
*************
nTempo_espera:=10 //Tempo a ser esperado ate chamar a funcao
cNome_funcao:="LOGOFF()" //nome da funcao a ser chamada quando
//chegar no tempo de espera
lTimercontinua:=.f. //se apos executar a funcao , continua monitorando
//a inatividade do mouse e teclado.
define window oWnd title "Teste de teclado e mouse"
activate window oWnd on init tinativo():new(nTempo_espera,cNome_funcao, lTimerContinua)
return NIL
function logoff
msgalert("AQUI ENTRA SUA FUNCAO DE LOGOFF !","AVISO")
return nil
*****TINATIVO.PRG
*****************************************
* CLASSE PARA DETECTAR SE O SISTEMA ESTA
* INATIVO POR (N) SEGUNDOS, E SE ESTIVER,
* CHAMA UMA FUNCAO (PODE SER UMA FUNCAO
* DE LOGOFF , DESCANSO DE TELA , ETC..)
*****************************************
* AUTOR DA FUNۂO ORIGINAL :
* POMPEO (GUARATINGUETA)
* MIGRAۂO DA FUNۂO PARA CLASSE:
* WILLIAM DE BRITO ADAMI
*****************************************
#include "fivewin.ch"
CLASS TINATIVO
DATA nTimeInpAntes
DATA nTimeInpDepois
DATA cTimeAtu
DATA nTempo
DATA oTimerTime
DATA cFunc
DATA lContinuar
METHOD NEW( nTime, cFuncao, lContinua ) CONSTRUCTOR
METHOD ver_tempo()
ENDCLASS
**********************
METHOD new(ntime,cFuncao,lContinua) CLASS TINATIVO
**********************
::cfunc:=cfuncao
::ntempo:=ntime
::lContinuar:=lContinua
::oTimerTime := TTimer():New( 1000, { || ::VER_TEMPO() } )
::oTimerTime:Activate()
::cTimeAtu := time()
::nTimeInpAntes := getInputState() // 0 = erro
return self
*************************
METHOD VER_TEMPO CLASS TINATIVO
*************************
::nTimeInpDepois := getInputState()
if ( ::nTimeInpDepois - ::nTimeInpAntes ) > 0
::nTimeInpAntes := getInputState()
::cTimeAtu := time()
endif
if ( CONVTIME(time()) - CONVTIME(::cTimeAtu) ) > ::ntempo
::oTimerTime:DeActivate()
aux:=::cfunc
* aqui executa a funcao
&aux
if ::lContinuar
::oTimerTime:Activate()
::cTimeAtu := time()
endif
endif
return NIL
FUNCTION CONVTIME(ZZ)
Z:=(VAL(LEFT(ZZ,2))*360)+(VAL(SUBSTR(ZZ,4,2))*60)+VAL(RIGHT(ZZ,2))
RETURN Z
**----------------------------------------------------------------------
#pragma BEGINDUMP
#define _WIN32_WINNT 0x0500
#define WINVER 0x0500
#include "windows.h"
#include "hbapi.h"
HB_FUNC( GETINPUTSTATE )
{
LASTINPUTINFO lpi;
lpi.cbSize = sizeof(LASTINPUTINFO);
if (!GetLastInputInfo(&lpi))
{
hb_retni(0);
}
hb_retni(lpi.dwTime);
}
#pragma ENDDUMP
cuando hay actividad es posible insertar una imagen o imágenes que caminan en la pantalla como si fuera un anuncio?
Re: Quit the program when time out (like screen saver)
Posted: Sun Apr 12, 2020 1:45 am
by karinha
Re: Quit the program when time out (like screen saver)
Posted: Mon Apr 13, 2020 1:51 pm
by driessen
Why making it so difficult.
It's quite easy.
Just start a timer. This timer checks for example every 30 seconds if a certain time has passed.
If so, just quit the program.
Not that difficult.