VB 2005 - Criando um protetor de tela para seu computador


Este artigo mostra os passos básicos para você criar um protetor de tela usando o Visual Basic 2005 Express. Para não complicar muito o assunto e tornar o entendimento do código e das etapas mais clara será criado um protetor de tela muito simples sem imagens gráficas ou efeitos especiais. Nada impede porém que você incremente o projeto incluindo estas funcionalidades usando todo o seu talento.

Vamos criar então o nosso protetor de tela...

Ele deverá apresentar uma tela negra e exibir a data e a hora ou somente a hora no centro da tela conforme a opção do usuário. Abaixo temos uma visão do protetor em funcionamento:

Abra o Visual Basic 2005 Express e crie um novo projeto do tipo Windows Forms chamado protecaoTela e altere o nome do formulário padrão de form1.vb para protecaoTela.vb.

Abra o formulário protecaoTela.vb e defina as seguintes propriedades:

Este formulário será usado para exibir a proteção de tela; maximizando o formulário e definindo que o formulário deverá aparecer sempre sobre todos os demais formulários (TopMost=True) fará com que o mesmo ocupe toda a tela do computador sobre qualquer janela que estiver aberta.

Vamos incluir um controle Label chamado horaAtual no formulário protecaoTela.vb e definir as seguintes propriedades do controle:

Inclua um controle Timer chamado ClockTimer no formulário e define as seguintes propriedades deste controle:

Abaixo temos o leiaute do formulário exibindo o controle Label e o controle Timer:

Inclua o seguinte código no formulário; nele estaremos tratando eventos de mouse e de exibição dos valores de data e hora no formulário.

Public Class protecaoTela

Private ultimaPosicaoDoMouse As New Point(-1, -1)

Private Sub ClockTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ClockTimer.Tick
   ' ----- exibe a hora
   atualizaRelogio()
End Sub

Private Sub atualizaRelogio()
' ----- Aualiza e exibe quando houver mudanças
If (IncluirData() = True) Then
    horaAtual.Text = Now.ToLongDateString & vbCrLf & Now.ToLongTimeString
Else
   horaAtual.Text = Now.ToLongTimeString
End If
End Sub

Private Sub protecaoTela_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) _
Handles Me.FormClosing
  ' ----- Restaura o ponteiro do mouse
    Windows.Forms.Cursor.Show()
End Sub

Private Sub protecaoTela_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles Me.KeyDown
  ' ----- Pressionar qualquer tecla para o programa
  Me.Close()
End Sub

Private Sub protecaoTela_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  ' ----- Esconde o cursor do mouse
 
Windows.Forms.Cursor.Hide()
  atualizaRelogio()
End Sub

Private Sub protecaoTela_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
  ' ----- ao clicar pára o programa.
  Me.Close()
End Sub

Private Sub protecaoTela_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
' ----- Ao mover o mouse -> para o programa
If (ultimaPosicaoDoMouse <> New Point(-1, -1)) Then
   ' ----- Verifica se o mouse moveu-se
   If (ultimaPosicaoDoMouse <> New Point(e.X, e.Y)) Then
       Me.Close()
   End If
End If

' ----- Grava a posicao atual
ultimaPosicaoDoMouse = New Point(e.X, e.Y)
End Sub

Private Sub protecaoTela_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
  ' ----- Centraliza a Label no formulário
   horaAtual.Location = New Point(0, (Me.Height - horaAtual.Height) / 2)
   horaAtual.Size = New Size(Me.Width, horaAtual.Height)
End Sub
End Class

Inclua um novo formulário no projeto usando o item Project e a opção Add Windows Forms. Vamos chamar este formulário de config.vb pois ele permitirá o usuário selecionar se deseja exibir a data na proteção de tela. Inclua no formulário um controle CheckBox  com o nome de IncluirData e dois botões de comando chamados cmdOK e cmdCancela conforme a figura abaixo:

Este formulário não vai possuir código devemos apenas definir as seguintes propriedades dos controles usados e do formulário, vamos começar pelo formulário:

Agora inclua um módulo no projeto chamado Geral.vb e digite o seguinte código:

Module Geral

Public Sub Main()
' ----- Inicia a proteção de tela aqui
Dim opcaoInicio As String = ""

' ----- Verifia os argumentos de linha de comando
' /s = Inicia a proteção de tela
' /c = Configura a proteção de tela (default)
If (My.Application.CommandLineArgs.Count > 0) Then opcaoInicio = My.Application.CommandLineArgs(0).ToUpper()

If (opcaoInicio = "") Then opcaoInicio = "/C"

If (opcaoInicio.Substring(0, 2) = "/C") Then
    config.ShowDialog()
    Return
ElseIf (opcaoInicio.Substring(0, 2) <> "/S") Then
   ' ----- Ignora todas as opções alem de ".startup"
Return
End If

 ' ----- Inica a protecao de tela
  protecaoTela.ShowDialog()
End Sub

Public Function IncluiData() As Boolean
' ----- Obtem o valor da configuração atual
Dim configChave As Microsoft.Win32.RegistryKey
Dim valor As Object

IncluiData = False
Try
   ' ----- Carrega os valores do registro
   configChave = My.Computer.Registry.CurrentUser.OpenSubKey("Software\Macoratti\protecaoTela")

    If (configChave IsNot Nothing) Then
         'obtem o valor salvo no registro do checkbox IncluirData
         valor = configChave.GetValue("IncluirData")
     If (valor IsNot Nothing) Then IncluiData = CBool(valor)
         configChave.Close()
     End If
Catch ex As Exception
   ' ----- Não exibe erros
Finally
    configChave = Nothing
End Try
End Function

End Module

Neste código a proteção de tela é ativada e a função IncluiData() irá verificar se a data deve ser exibida na tela recuperando o valor salvo no registro (propriedade do controle checkBox - IncluirData do formulário config.vb)

Pegue o projeto completo aqui :   protecaoTela.zip

Até 2007 com mais artigos sobre VB.NET e um Feliz Ano Novo...


José Carlos Macoratti