COMO ATIVAR PROTECAO DE TELA EM PROJETOS VB6

ALENCARCARLOS 12/10/2009 14:56:13
#325087
Bom galera,

Minha dúvida é a seguinte... gostaria de implementar em um projeto de VB6 uma proteção de telas, mas não sei como fazer o temporizador para ativar a proteção de telas... acho que tenho que verificar por um determinado tempo o movimento do mouse e a utilização do teclado... mas não estou sabendo como fazer isso.

Alguém poderia me ajudar???


Obrigado a todos.
MARCELO.TREZE 12/10/2009 15:19:24
#325090
Resposta escolhida
Veja como eu consegui isto,

[ô] este código funciona da seguinte maneira após 5 minutos de inatividade
[ô] em seu programa a tela de LOGIN aparece, e se você voltar a usar o PC
[ô] antes desse tempo nada acontece, estilo proteção de tela do windows
[ô] quando o computador está ativo

no form insira o seguinte código

[ô] no general do form
Dim contar as Integer

Private Sub Form_Load()
Contar = 1
Timer1.Interval = 60000
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
If contar = 5 Then [ô] o cinco indica o tempo de inatividade para chamar o login
Unload me
Frm_login.Show [ô] Substitua pelo o nome de seu Form de Login ou outro
Else
contar = contar + 1
End If
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
contar = 1
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, _
Y As Single)
contar = 1
End Sub
JWCELYO 12/10/2009 17:37:14
#325093
nesse exemplo que fis para você num requer muito do seu aplicativo simplesmente utilizamos os recursos originais do windows

Private Sub Form_Load()
[ô] ativa opção de protetor de tela
RegWrite [Ô]HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveActive[Ô], [Ô]1[Ô]
[ô] define o tempo que o protetor de tela sera exibido no caso ai esta com 120 segundos
RegWrite [Ô]HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveTimeOut[Ô], [Ô]120[Ô]
[ô]infoma oquivo de protetor de tela logon.scr
RegWrite [Ô]HKEY_CURRENT_USER\Control Panel\Desktop\SCRNSAVE.EXE[Ô], [Ô]E:\WINDOWS\system32\logon.scr[Ô]
End Sub

ALENCARCARLOS 13/10/2009 10:52:19
#325154
Não sei o que fiz de errado mas nas duas opções que tentei não funcionou...

Estou colocando este código em MDI form, até reduzi o tempo para a execução dos comandos, mas não deu certo...

Segue o código para mehlor vizualização...

Tentei esse e não funcionou...

Private Sub Form_Load()
[ô] ativa opção de protetor de tela
RegWrite [Ô]HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveActive[Ô], [Ô]1[Ô]
[ô] define o tempo que o protetor de tela sera exibido no caso ai esta com 5 segundos
RegWrite [Ô]HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveTimeOut[Ô], [Ô]5[Ô]
[ô] infoma oquivo de protetor de tela logon.scr
RegWrite [Ô]HKEY_CURRENT_USER\Control Panel\Desktop\SCRNSAVE.EXE[Ô], [Ô]C:\WINDOWS\system32\logon.scr[Ô]
End Sub


Tentei este outro e também não tive sucesso...

[ô] No general
Dim contar As Integer

Private Sub Form_Load()
saida = 1
contar = 1
Timer1.Interval = 60000
Timer1.Enabled = True

End Sub

Private Sub Timer1_Timer()
If contar = 1 Then
Shell (App.Path & [Ô]\protecao.scr[Ô])
End If
If contar = 3 Then [ô] o cinco indica o tempo de inatividade para chamar o login
Unload Me
frm_login.Show [ô] Substitua pelo o nome de seu Form de Login ou outro
Else
contar = contar + 1
End If
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
contar = 1
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
contar = 1
StatusBar1.Panels(2).Text = [Ô][Ô] [ô] limpa a informação no painel da Statusbar
End Sub


Para lembrar estou colocando estes códigos em um MDI Form e chamo forms childs através dele e mesmo com ou sem forms child não funcionou.

Obrigado pela ajuda galera, mas ainda não está rodando.
MARCELO.TREZE 13/10/2009 11:57:09
#325161
mudou o interval do timer para 1 esquecia penas disto
JWCELYO 13/10/2009 12:26:48
#325167
você baixo o exemplo e testo ?
ALENCARCARLOS 13/10/2009 12:31:01
#325168
Marcelo,

Eu ajustei manualmente o interval do timer e deletei a linha do form que atribui o intervalo no form load e funcionou...

Muito obrigado.

Mas eu gostaria de chamar antes do login a proteção de tela.... se não for pedir muito vc saberia como fazer isso??

Desde já agradeço.

ALENCARCARLOS 13/10/2009 12:35:07
#325171
JWCELYO

Sim baixei e testei e mesmo assim não funcionou.... estranho fiquei esperando um tempão e a proteção de tela não funfou.

Mas memso assim obrigado.
MARCELO.TREZE 13/10/2009 12:37:00
#325172
então vamos lá

no general cole

Private Declare Function SendMessage Lib [Ô]user32[Ô] Alias [Ô]SendMessageA[Ô] (ByVal hWnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const WM_SYSCOMMAND = &H112&
Const SC_SCREENSAVE = &HF140&


e altere esta parte do código

Private Sub Timer1_Timer()
Dim result As Long
If contar = 5 Then [ô] o cinco indica o tempo de inatividade para chamar o login
result = SendMessage(Me.hWnd, WM_SYSCOMMAND, SC_SCREENSAVE, 0&)
Else
contar = contar + 1
End If
End Sub
ALENCARCARLOS 13/10/2009 12:51:03
#325175
Marcelo,

funcionou beleza, mas só tive que fazer um ajuste para chamar depois o form do login senão ele fica somente na proteção de tela:

Private Sub Timer1_Timer()
Dim result As Long
If contar = 5 Then [ô] o cinco indica o tempo de inatividade para chamar o login
result = SendMessage(Me.hWnd, WM_SYSCOMMAND, SC_SCREENSAVE, 0&)
contar = contar + 1
Else
contar = contar + 1
End If
End Sub

Muito obrigado mesmo.
Tópico encerrado , respostas não são mais permitidas