Well I got it, there is only one drawback, it does not record mouse movement as activity, just click, change fields, etc.
The code is great:
Form 'system'
public Timer relogio; // cria timer
public int contador = -1; // contador (conta o tempo em segundos)
public bool atv = false; // booleano para controle do formulario de login
// abaixo do InitializeComponent();
relogio = new Timer(); // cria uma instancia de time
relogio.Interval = 1000; //depermina o tempo (assim fica em segundos)
relogio.Enabled = true; // ativa o time
this.relogio.Tick += new System.EventHandler(this.relogio_Tick); // cria um metodo de controle
private void Interface_Click(object sender, EventArgs e)
{//redefine contador quando há clique no formulario (deve-se criar isso para cada campo de formulario, desde menu a campos de texto)
contador = -1;
}
private void relogio_Tick(object sender, EventArgs e) //controlador de time
{
if (contador == 10) // quando o contador chegar a 10 (10 segundos)
{
if (atv == false)//se a tela de login nao estiver em execução
{
this.Enabled = false;//desabilita o formulario 'sistema'
LoginBloq nvLoginBloq = new LoginBloq(); //cria uma instancia do login
nvLoginBloq.Show(); // abre a instancia
}
else{}//se atv = true (se formulario 'login' estiver ativo não faz nada)
}
else if(contador > 10) //se contador for mais que 10 (10 segundos)
{
this.relogio.Enabled = false;//desabilita relogio
}
contador++;// a cada vez ele que executa o metodo (sempre) ele aumenta contador
}
Login Form
//após o InitializeComponent();
Login.nvInterface.atv = true; // fala que esta ativo (para nao ficar criando novos form 'login')
// após ele permitir o login (ao clicar no botao de login)
this.Enabled = false; // desabilita a si mesmo
Login.nvInterface.atv = false; //
Login.nvInterface.contador = -1; //rededine o contador (em segundos)
Login.nvInterface.relogio.Enabled = true; //ativa o time novamente
Login.nvInterface.Show(); //mostra novamente o formulario 'sistema'
Login.nvInterface.Enabled = true; // ativa (desbloqueia) formulario 'sistema'
this.Visible = false; // torna-se invisivel
//as linhas Visible e Enabled, são necessárias nessa ordem, se não ele buga
Login.nvInterface - is an instance created on another Login form, to display the 'system' form
If you have any form before the 'system' (as is the case)
Previous Form
// antes de tudo
public static Interface nvInterface = new Interface(); //criar uma instancia publica do formulario 'sistema'
// depois de InitializeComponent();
nvInterface.relogio.Enabled = false; //desativa relogio do formulario 'sistema'
// no metodo do botão que vai para o formulario 'sistema' ou depois do InitializeComponent(); do formulario 'sistema'
nvInterface.relogio.Enabled = true; //ativa relogio do formulario 'sistema'
// assim ele 'trava' o time da instancia ate que ela seja exibida