Ejemplo de Funcion sysIdleSecs()
Posted: Mon Nov 07, 2022 4:24 pm
Saludos.
Hace días, el Master Joao (Karinha), me solicitó que le dejara un ejemplo de la función "sysIdleSecs()"
Acá se los dejó, a él y a todo el foro, espero sea de utilidad para muchos.
NOTA: La función mide el tiempo transcurrido SIN actividad del mouse y teclado EN TODA LA PC , no es el tiempo sin actividad dentro de nuestra aplicación.
El contador de dicha función, se reinicia automaticamente a 0 cuando se realiza alguna operacion con el mouse o el teclado.
Un abrazo.
NOTA: El archivo "Cuentas32.ch" que esta al inicio del código, es mi versión personalizada del "Fivewin.ch"
Hace días, el Master Joao (Karinha), me solicitó que le dejara un ejemplo de la función "sysIdleSecs()"
Acá se los dejó, a él y a todo el foro, espero sea de utilidad para muchos.
NOTA: La función mide el tiempo transcurrido SIN actividad del mouse y teclado EN TODA LA PC , no es el tiempo sin actividad dentro de nuestra aplicación.
El contador de dicha función, se reinicia automaticamente a 0 cuando se realiza alguna operacion con el mouse o el teclado.
Un abrazo.
Code: Select all | Expand
#Include "Cuentas32.ch"
// function to exit the app when default 'x' number of seconds pass with no activity
// from the keyboard or mouse.
// attention! IT IS NOT THE TIME without activity of our application, it is the inactive time of the PC
// función para salir de la aplicación cuando pasan 'x' cantidad de segundos predeterminados sin actividad
// del teclado o raton.
// ¡atención! NO ES EL TIEMPO sin actividad de nuestra aplicacion, es el tiempo inactivo de la PC
// função para sair do aplicativo quando o número padrão 'x' de segundos passa sem atividade
// do teclado ou mouse.
// atenção! NÃO É O TEMPO sem atividade do nosso aplicativo, é o tempo inativo do PC
Static oDlg, oTimerExit
Static nInterval
****************************************************************************************************************************
Function Fnct_Prueba()
Local oGet1
Local cVar1 := spac(10)
Public nSecondsToOut:= 55 //(segundos)
nInterval:=1*60000 //(1 x 60000 = 1 minuto)
Define Dialog oDlg resource "oDlg_Prueba"
Redefine get oGet1 Var cVar1 Id 100 of oDlg
Activate Dialog oDlg on init (oGet1:SetFocus(),Fnct_StartCounterTime() )
Return ( Nil )
***********************************************************************************************************************
Function Fnct_StartCounterTime ()
Define Timer oTimerExit of oDlg Interval nInterval Action ( iif( sysIdleSecs()>nSecondsToOut,fExit(),))
oTimerExit:Activate()
Return NIL
********************************************************************************************************************
function fExit()
oTimerExit:Deactivate()
oTimerExit:End()
msgAlert('Tu Sesión Finalizó Por Inactividad.','Fin de Sesión')
oDlg:End()
quit
return .t.
*********************************************************************************************************************
// typedef struct tagLASTINPUTINFO {
// UINT cbSize;
// DWORD dwTime;
// } LASTINPUTINFO, *PLASTINPUTINFO;
WINUSERAPI BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO);
typedef BOOL (WINAPI *GETLASTINPUTINFO_)(PLASTINPUTINFO);
HB_FUNC( SYSIDLESECS )
{
HINSTANCE handle= LoadLibrary("user32.dll");
if ( handle)
{
GETLASTINPUTINFO_ pFunc;
pFunc = GetProcAddress( handle,"GetLastInputInfo" );
if (pFunc)
{
LASTINPUTINFO lpi;
lpi.cbSize = sizeof(LASTINPUTINFO);
if (!pFunc(&lpi))
{
hb_retni(0);
}
else
{
hb_retnd( ( DOUBLE ) ( GetTickCount() - lpi.dwTime ) * 0.001 );
}
}
else
{
hb_retni(0);
}
}
if (handle)
{
FreeLibrary( handle);
}
}
#pragma ENDDUMP
***********************************************************************************************+