Call my screen entry program identification number or
Exit the program
if they
do not
move your mouse
to press any keys
for a period
of time
*********************************
file
1*****
/*
TIMERAC.CH
Timer Action VER 1
BY HATHAL http://WWW.LIVESYSTEM.NET
AT 2012-5-20
*/ *********************************
#xcommand
DEFINE TIME OUT <oTIMERAC>
OF <oWnd> SECOND <nSec>
ACTION <bAction> ;
=> ;
<oTIMERAC> := TimerAc
():
SetAc(<nSec>,<oWnd>,
[<
{bAction
}>
])// *********************#xcommand
DEFINE TIME OUT
TO <oActIon2>
OF <oWnd> SECOND <nSec>
ACTION <bAction> ;
=> ;
TimerAc
():
ACTION2(<nSec>,<oWnd>,
[<
{bAction
}>
],<oActIon2>
) *********************************************************
file
2*******
#include "FiveWin.ch"/*
TIMERAC.PRG CLASS
Timer Action VER 1
BY HATHAL http://WWW.LIVESYSTEM.NET
AT 2012-5-20
*/ //----------------------------------------------------------------------------//CLASS TimerAc
DATA nSec
DATA Action_View
DATA start_out_sec
DATA oTimer_Ac
DATA bAction
DATA oWnd_Ac
DATA start_out
METHOD ACTION2
(nSec,oWnd,bAction,oActIon2
) METHOD SetAc
(nSec,oWnd_Ac,bAction
) METHOD KeyMov
() METHOD StartAc
() METHOD time_out
()ENDCLASS//----------------------------------------------------------------------------// ***************
METHOD ACTION2
(nSec,oWnd,bAction,oActIon2
) oActIon2:
oWnd_Ac:=oWnd
oActIon2:
Action_View:=.F.
oActIon2:
start_out = second
()+nSec
//second oActIon2:
bAction:=bAction
::
oWnd_Ac:=oWnd
RETURN NIL*************************
METHOD SetAc
(nSec,oWnd_Ac,bAction
) CLASS TimerAc
DEFAULT nSec :=
10 // second ::
oWnd_Ac :=oWnd_Ac
::
start_out :=nSec
::
start_out_sec :=::
start_out ::
start_out :=second
()+ ::
start_out_sec ::
Action_View :=.f.
::
bAction := bAction
// ::KeyMov()return Self***************
METHOD KeyMov
() CLASS TimerAc
if ! Empty
(::
oWnd_Ac ) IF ::
oWnd_Ac !=
nil ::
oWnd_Ac:
bKeyDown =
{ | nKey | ::
start_out :=second
()+ ::
start_out_sec )} ::
oWnd_Ac:
bMMoved :=
{|nRow, nCol| ::
start_out :=second
()+ ::
start_out_sec ) } ENDIFendif return Self***************
METHOD StartAc
() CLASS TimerAc
::
KeyMov() DEFINE TIMER oTimer_Ac
ACTION (::
time_out()) ACTIVATE TIMER oTimer_Ac
return Self// ****************************METHOD time_out
() CLASS TimerAc
if ::
start_out<=second
() *********
if ::
Action_View=.f.
******
if ::
bAction !=
nil ::
Action_View =.t.
if ::
bAction !=
nil Eval
(::
bAction) endif ::
start_out = second
() +::
start_out_sec ::
Action_View =.f.
endif ******
endif ************
endif return nil// ****************************file
3*******
*********************************
/*
Timer Action TEST.PRG VER 1
BY HATHAL http://WWW.LIVESYSTEM.NET
AT 2012-5-20
*/*********************************
#include "FiveWin.ch"#include "TIMERAC.ch"STATIC O_Action
*****************************
function Main
()LOCAL oWnd
DEFINE WINDOW oWnd
TITLE "Test Timer Action WITH KEYBOURD NOT DOWN AND MOUSE NOT MOVE" DEFINE TIME OUT O_Action
OF oWnd SECOND
4 ACTION lGetPassword
(oWnd
) ACTIVATE WINDOW oWnd ;
ON INIT (O_Action:
StartAc())return nil************************************
function lGetPassword
(oWnd
) local oDlg, oGet, oFont
local cPassword := Space
( 10 ) local nTries :=
0 local lGo := .f.
LOCAL MY_PASSWORD:=
"HATHAL" // WRITE ANY PASSOWD DO WHILE lGo=.f.
DEFINE DIALOG oDlg ;
FROM 5,
5 TO 30,
80 ;
TITLE "Please Identify" DEFINE TIME OUT
TO O_Action
OF oDlg SECOND
5 ACTION msginfo("new timer Action") @
1,
2 SAY "Write FiveWin to go ahead..." OF oDlg
@
2,
2 GET oGet
VAR cPassword
OF oDlg PASSWORD
@
3,
5 BUTTON "&Continue" OF oDlg ;
ACTION ( nTries++,;
lGo := Upper
( AllTrim
( cPassword
) ) == MY_PASSWORD,;
If( nTries >
3 .or. lGo, oDlg:
End(),;
( MsgAlert
( "Wrong password! " ), oGet:
SetFocus() ) ) ) ACTIVATE DIALOG oDlg
CENTERED End
Do DEFINE TIME OUT
TO O_Action
OF oWnd SECOND
10 ACTION lGetPassword
("N1") return lGo
******************************