Como criar uma proteção de tela usando o Visual Basic .NET ou Visual Basic 2005

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 818359
Sumário
Este artigo passo a passo descreve como criar uma proteção de tela usando o Microsoft Visual Basic .NET ou Microsoft Visual Basic 2005. Você pode desenvolver uma proteção de tela Letreiro digital com um formulário de configuração. Você pode criar, você pode testar e você pode registrar a proteção de tela no diretório \Windows.

back to the top

Criar o projeto de proteção de tela

  1. Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005.
  2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
  3. Na caixa de diálogo New Project , clique em Projetos do Visual Basic em Project Types e clique em Windows Application em modelos .

    Observação No Visual Studio 2005, clique em Visual Basic em Project Types .
  4. Nome do projeto MyScreenSaver e, em seguida, clique em OK .

    Por padrão, é criado o Form1.
  5. Defina as propriedades do Form1 da seguinte maneira:
    • nome : frmscr
    • CaixaDeControle : Falso
    • MaximizeBox : Falso
    • MinimizeBox : Falso
    • BackColor : preto
    • texto : ""(no text)
    • superior : True
    • WindowState : maximizada
  6. Na janela Solution Explorer, clique com o botão direito do mouse no Form1 e, em seguida, clique em Propriedades .
  7. Na janela Propriedades do arquivo, defina o arquivo nome propriedade para frmscr.vb .
  8. Adicionar um rótulo de controle.

    Por padrão, Label1 é adicionado ao formulário.
  9. Defina as propriedades de Label1 da seguinte maneira:
    • nome : lblMessage
    • ForeColor : amarelo
  10. Adicionar um Timer de controle.

    Timer1 é adicionado ao formulário.
  11. Defina a propriedade Enabled do timer para True .
  12. Para desativar a combinação de teclas CTRL + ALT + DEL em um sistema de operacional Microsoft Windows 95 ou em um sistema operacional de Microsoft Windows 98 e para obter a preferência do usuário anterior para o texto de letreiro digital, adicione o seguinte código para o evento load do formulário frmscr :
       Dim tmpLng As Integer        tmplng = SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1&, 0&, 0&)        Dim pRegKey As RegistryKey = Registry.CurrentUser        pRegKey = pRegKey.OpenSubKey("Software\Test Screen Saver", True)        Dim val As Object = pRegKey.GetValue("Message", "Enter Text here")        pRegKey.Close()        lblMessage.Text = val.ToString        Me.Cursor.Current.Hide()  
    o método Cursor.Current.Hide() faz com que o cursor desaparecem quando a proteção de tela é exibida.
  13. Para fechar a proteção de tela quando você pressionar qualquer tecla, adicione o seguinte código ao evento KeyDown de formulário frmscr :
    'Immediately end when any key is pressed.        Me.Close()
  14. Para fechar a proteção de tela quando você move o mouse, adicione o seguinte código ao evento MouseMove do formulário frmscr :
             Static OldX As Integer        Static OldY As Integer        'Determines whether the mouse was moved and whether the movement was large.        'If so, the screen saver is ended.        If (OldX > 0 And OldY > 0) And (Abs(e.X - OldX) > 3 Or Abs(e.Y - OldY) > 3) Then            Me.Close()        End If        'Assigns the current X and Y locations to OldX and OldY.        OldX = e.X        OldY = e.Y
  15. Para restaurar o cursor enquanto você fecha a proteção de tela e para reativar a combinação de teclas CTRL + ALT + DEL, adicione o seguinte código no evento Closing do formulário frmscr :
    'Restore the mouse cursor.        Dim tmplng As Integer        Me.Cursor.Current.Show()       'Re-enable the CTRL+ALT+DEL key combination if it is disabled.        tmplng = SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0&, 0&, 0&)
  16. Para fornecer um efeito de letreiro digital, adicione o seguinte código ao evento Tick do controle Timer :
    'Determine whether the Message has moved completely off the left side of the screen.        If lblMessage.Left < (0 - lblMessage.Width) Then            lblMessage.Left = GetScaleWidth(Me) 'ScaleWidth        End If        'Moves lblMessage to the left.        lblMessage.Left = lblMessage.Left - 10
  17. No menu Project , clique em Adicionar módulo .

    Por padrão, Module1 é criado.
  18. Para exibir o formulário de configuração do usuário ou o formulário de proteção de tela (com base nos argumentos de linha de comando do Windows), adicione o seguinte evento Sub Main Module1 :
    Public Sub Main(ByVal args As String())        Dim Inst As Boolean = False        If args.Length > 0 Then            sStartType = args(0).ToLower.Trim().Substring(0, 2)            If sStartType = "" Then                'This will occur when a user right-clicks the .scr                'file and then selects "configure"                sStartType = "/c"            End If            ' Determine whether the screen saver should show user definable options.            If sStartType = "/c" Then                Dim usercnfg As New frmcnfg                usercnfg.ShowDialog()                ' Exit the application.                Exit Sub            End If            ' Determine whether the screen saver should just execute.            If sStartType = "/s" Then                'Check for previous instance.                Inst = PrevInstance()                If Not (Inst) Then                    ' Create a Screen Saver form, and then display the form.                    Dim scrsvr As New frmscr                    scrsvr.ShowDialog()                Else                    'If a previous instance exists, exit the application.                    Exit Sub                End If            End If        End If End Sub 
    a função PrevInstance() determina se uma instância anterior da proteção de tela está sendo executado.
  19. Para determinar se uma instância anterior da proteção de tela está em execução, adicione a função PrevInstance() à Module1 da seguinte maneira:
    Function PrevInstance() As Boolean        If UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then            Return True        Else            Return False        End IfEnd Function
    back to the top

Adicionar o formulário de configuração de proteção de tela

  1. No menu Project , clique em Add Windows Form .
  2. Na caixa de diálogo Add New Item , clique em Windows Form em modelos .
  3. Digite frmcnfg na caixa de texto nome e em seguida, clique em Abrir .
  4. Na janela Propriedades do formulário frmcnfg , defina a propriedade Text à Instalação de proteção de tela .
  5. Adicionar um controle Label , adicionar um controle TextBox e adicione dois controles Button ao formulário frmcnfg .
  6. Defina as seguintes propriedades:
    • Label1
      texto : Digite a mensagem
    • TextBox1
      nome : txtmessage
      texto : Digite texto aqui
      várias linhas : True
    • Button1
      nome : cmdOK
      texto : & OK
    • Button2
      nome : cmdCancel
      texto : & Cancelar
  7. Para aceitar o texto de letreiro digital do usuário e, em seguida, para armazenar o texto em um registro, adicione o código a seguir para o botão OK do formulário frmcnfg :
            'Save the current settings to        'HKEY_CURRENT_USER\Software\        'in the registry.        Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey("Software", True)        Dim newkey As RegistryKey = key.CreateSubKey("Test Screen Saver")        newkey.SetValue("Message", txtmessage.Text)        newkey.Close()        Me.Close()
back to the top

Concluir a listagem de código

Concluir Code Listing (frmscr)

Imports Microsoft.Win32Imports Microsoft.VisualBasicImports System.MathPublic Class frmscr    Inherits System.Windows.Forms.Form#Region " Windows Form Designer generated code "    Public Sub New()        MyBase.New()        'The Windows Form Designer requires this call.        InitializeComponent()        'Add any initialization after the InitializeComponent() call.    End Sub    'Form overrides dispose to clean up the component list.    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)        If disposing Then            If Not (components Is Nothing) Then                components.Dispose()            End If        End If        MyBase.Dispose(disposing)    End Sub    'Required by the Windows Form Designer.    Private components As System.ComponentModel.IContainer    'NOTE: The Windows Form Designer requires the following procedure.    'It can be modified by using the Windows Form Designer.      'Do not modify the procedure by using the Code editor.    Friend WithEvents lblMessage As System.Windows.Forms.Label    Friend WithEvents Timer1 As System.Windows.Forms.Timer    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()        Me.components = New System.ComponentModel.Container        Me.lblMessage = New System.Windows.Forms.Label        Me.Timer1 = New System.Windows.Forms.Timer(Me.components)        Me.SuspendLayout()        '        'lblMessage        '        Me.lblMessage.AutoSize = True        Me.lblMessage.BackColor = System.Drawing.Color.Black        Me.lblMessage.ForeColor = System.Drawing.Color.Yellow        Me.lblMessage.Location = New System.Drawing.Point(72, 118)        Me.lblMessage.Name = "lblMessage"        Me.lblMessage.Size = New System.Drawing.Size(193, 36)        Me.lblMessage.TabIndex = 1        Me.lblMessage.Text = "screen saver"        Me.lblMessage.TextAlign = System.Drawing.ContentAlignment.MiddleCenter        '        'Timer1        '        Me.Timer1.Enabled = True        '        'frmscr        '        Me.AutoScaleBaseSize = New System.Drawing.Size(15, 33)        Me.BackColor = System.Drawing.Color.Black        Me.ClientSize = New System.Drawing.Size(292, 273)        Me.ControlBox = False        Me.Controls.Add(Me.lblMessage)        Me.Font = New System.Drawing.Font("Microsoft Sans Serif", 21.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))        Me.MaximizeBox = False        Me.MinimizeBox = False        Me.Name = "frmscr"        Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen        Me.TopMost = True        Me.WindowState = System.Windows.Forms.FormWindowState.Maximized        Me.ResumeLayout(False)    End Sub#End Region    Private Sub frmscr_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        Dim tmpLng As Integer        tmpLng = SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1&, 0&, 0&)        'Get the user's previous preference for the marquee message.        Dim pRegKey As RegistryKey = Registry.CurrentUser        pRegKey = pRegKey.OpenSubKey("Software\\Test Screen Saver")        Dim val As Object = pRegKey.GetValue("Message")        pRegKey.Close()        lblMessage.Text = val.ToString        'Make the cursor disappear.        Me.Cursor.Current.Hide()    End Sub    Private Sub frmscr_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown        'Immediately end when any key is pressed.        Me.Close()    End Sub    Private Sub frmscr_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated        'Center the lblMessage label to the form.        lblMessage.Left = GetScaleWidth(Me)        lblMessage.Top = (GetScaleWidth(Me) - lblMessage.Height) / 3    End Sub    Private Sub frmscr_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing        'System.Windows.Forms.Cursor.Current.Show        ''Restore the mouse cursor.        Dim tmplng As Integer        Me.Cursor.Current.Show()        tmplng = SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0&, 0&, 0&)    End Sub    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick        'Determine whether the Message has moved completely off the left side of the screen.        If lblMessage.Left < (0 - lblMessage.Width) Then            lblMessage.Left = GetScaleWidth(Me) 'ScaleWidth        End If        'Moves lblMessage to the left.        lblMessage.Left = lblMessage.Left - 10    End Sub    Private Sub frmscr_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove        Static OldX As Integer        Static OldY As Integer        'Determines whether the mouse was moved and whether the movement was large.        'if so, the screen saver is ended.        If (OldX > 0 And OldY > 0) And (Abs(e.X - OldX) > 3 Or Abs(e.Y - OldY) > 3) Then            Me.Close()        End If        'Assigns the current X and Y locations to OldX and OldY.        OldX = e.X        OldY = e.Y    End SubEnd Class
Observação Você deve alterar o código no Visual Basic 2005. Por padrão, Visual Basic cria dois arquivos para o projeto quando você cria um projeto Windows Forms. Se o formulário é denominado Form1, os dois arquivos que representam o formulário são chamados de Form1.vb e Form1.Designer.vb. Escreva o código no arquivo Form1.vb. O Windows Forms Designer escreve o código no arquivo Form1.Designer.vb. O Windows Forms Designer usa a palavra-chave partial para dividir a implementação de Form1 em dois arquivos separados. Esse comportamento impede que o código gerado pelo designer sendo intercaladas com seu código.

Para obter mais informações sobre os novos aprimoramentos linguagem Visual Basic 2005, visite o seguinte site da Web Microsoft Developer Network (MSDN): Para obter mais informações sobre classes parciais e o Windows Forms Designer, visite o seguinte site da MSDN: back to the top

Concluir código listagem (Module1)

Imports System.Runtime.InteropServicesImports System.EnvironmentModule Module1    Public Declare Auto Function SystemParametersInfo Lib "user32" (ByVal uAction As Integer, ByVal uParam As Integer, ByRef pvParam As Integer, ByVal fuWinIni As Integer) As Boolean    Public Const SPI_SCREENSAVERRUNNING = 97&    Public Const frmedge As Integer = 4    Public nMouseMoves&    Dim sStartType    Public Sub Main(ByVal args As String())        Dim Inst As Boolean = False        If args.Length > 0 Then            sStartType = args(0).ToLower.Trim().Substring(0, 2)            If sStartType = "" Then                'This will occur when a user right-clicks the .SCR                'file and chooses "configure"                sStartType = "/c"            End If            ' Determine whether the screen saver should show user-definable options.            If sStartType = "/c" Then                Dim usercnfg As New frmcnfg                usercnfg.ShowDialog()                ' Exit the application.                Exit Sub            End If            ' Determine whether the screen saver should just execute.            If sStartType = "/s" Then                'Check for previous instance.                Inst = PrevInstance()                If Not (Inst) Then                    ' Create a Screen Saver form and display the form.                    Dim scrsvr As New frmscr                    scrsvr.ShowDialog()                Else                    'If a previous instance exists, exit the application.                    Exit Sub                End If            End If        End If    End Sub     Function PrevInstance() As Boolean        If UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then            Return True        Else            Return False        End If    End Function    Public Function GetScaleWidth(ByVal frm As Form) As Integer        Dim ctl As Control        Dim w As Integer = frm.ClientSize.Width        For Each ctl In frm.Controls            With ctl                If .GetContainerControl() Is frm Then                    If .Dock = DockStyle.Left Or .Dock = DockStyle.Right Then                        w = w - .Size.Width                    End If                End If            End With        Next        GetScaleWidth = w - frmedge    End Function    End Module
back to the top

Concluir Code Listing (frmcnfg)

Imports Microsoft.Win32Public Class frmcnfg    Inherits System.Windows.Forms.Form#Region " Windows Form Designer generated code "    Public Sub New()        MyBase.New()        'The Windows Form Designer requires this call.        InitializeComponent()        'Add any initialization after the InitializeComponent() call.    End Sub    'Form overrides dispose to clean up the component list.    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)        If disposing Then            If Not (components Is Nothing) Then                components.Dispose()            End If        End If        MyBase.Dispose(disposing)    End Sub    'Required by the Windows Form Designer.    Private components As System.ComponentModel.IContainer    'NOTE: The Windows Form Designer requires the following procedure.    'It can be modified by using the Windows Form Designer.      'Do not modify the procedure by using the Code editor.    Friend WithEvents txtmessage As System.Windows.Forms.TextBox    Friend WithEvents cmdcancel As System.Windows.Forms.Button    Friend WithEvents cmdOk As System.Windows.Forms.Button    Friend WithEvents label1 As System.Windows.Forms.Label    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()        Me.cmdOk = New System.Windows.Forms.Button        Me.cmdcancel = New System.Windows.Forms.Button        Me.label1 = New System.Windows.Forms.Label        Me.txtmessage = New System.Windows.Forms.TextBox        Me.SuspendLayout()        '        'cmdOk        '        Me.cmdOk.Location = New System.Drawing.Point(200, 184)        Me.cmdOk.Name = "cmdOk"        Me.cmdOk.Size = New System.Drawing.Size(56, 24)        Me.cmdOk.TabIndex = 0        Me.cmdOk.Text = "&OK"        '        'cmdcancel        '        Me.cmdcancel.Location = New System.Drawing.Point(272, 184)        Me.cmdcancel.Name = "cmdcancel"        Me.cmdcancel.Size = New System.Drawing.Size(56, 24)        Me.cmdcancel.TabIndex = 1        Me.cmdcancel.Text = "&Cancel"        '        'label1        '        Me.label1.Location = New System.Drawing.Point(24, 40)        Me.label1.Name = "label1"        Me.label1.Size = New System.Drawing.Size(152, 24)        Me.label1.TabIndex = 2        Me.label1.Text = "Enter Message"        '        'txtmessage        '        Me.txtmessage.Location = New System.Drawing.Point(32, 64)        Me.txtmessage.Multiline = True        Me.txtmessage.Name = "txtmessage"        Me.txtmessage.Size = New System.Drawing.Size(296, 96)        Me.txtmessage.TabIndex = 3        Me.txtmessage.Text = ""        '        'frmcnfg        '        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)        Me.ClientSize = New System.Drawing.Size(344, 221)        Me.Controls.Add(Me.txtmessage)        Me.Controls.Add(Me.label1)        Me.Controls.Add(Me.cmdcancel)        Me.Controls.Add(Me.cmdOk)        Me.Name = "frmcnfg"        Me.Text = "CONFIGURATION"        Me.ResumeLayout(False)    End Sub#End Region    Private Sub cmdcancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdcancel.Click        Me.Close()    End Sub    Private Sub cmdOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOk.Click        'Save the current settings to        'HKEY_CURRENT_USER\Software\        'in the registry.        Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey("Software", True)        Dim newkey As RegistryKey = key.CreateSubKey("Test Screen Saver")        newkey.SetValue("Message", txtmessage.Text)        newkey.Close()        Me.Close()    End SubEnd Class
back to the top

Criar e testar a proteção de tela

  1. No menu Project , clique em Propriedades MyScreenSaver .
  2. Na caixa de diálogo MyScreenSaver Property Pages , clique para selecionar Sub Main no inicialização objeto caixa de combinação.
  3. No menu Build , clique em Build Solution .
  4. Para testar a configuração de proteção de tela, execute as seguintes etapas:
    1. No menu Project , clique em Propriedades MyScreenSaver .
    2. Em Páginas de propriedade MyScreenSaver caixa de diálogo, clique para selecionar Propriedades de configuração e, em seguida, digite /c na caixa de texto argumentos de linha de comando no painel à direita. Clique em OK .
    3. Pressione a tecla F5 para criar e executar o programa.

      A caixa de diálogo Configuração de proteção de tela é exibida.
    4. Digite Teste proteção de tela na caixa de mensagem e, em seguida, clique em OK .
  5. Para testar o aplicativo de proteção de tela, execute as seguintes etapas:
    1. No menu Project , clique em Propriedades MyScreenSaver .
    2. Em Páginas de propriedade MyScreenSaver caixa de diálogo, clique para selecionar Propriedades de configuração e, em seguida, digite /s na caixa de texto argumentos de linha de comando no painel à direita. Clique em OK .
    3. Pressione a tecla F5 para criar e executar o programa.

      Proteção de tela de teste pode ser exibido na lista de Proteção de tela .
back to the top

Registrar a proteção de tela

  1. Localize o arquivo MyScreenSaver.exe na pasta bin de pasta de Aplicativo MyScreenSaver e renomeie de extensão de nome de arquivo .exe .SCR . Por exemplo, renomeie MyScreenSaver.exe como MyScreenSaver.scr .
  2. Copie o arquivo MyScreenSaver.scr para o Windows diretório.

    A opção MyScreenSaver está disponível na lista de Proteções de tela .
back to the top
Referências
Para obter informações sobre como criar proteções de tela usando o Microsoft DirectX, visite o seguinte site da Web Microsoft Developer Network (MSDN): back to the top

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 818359 - Última Revisão: 03/09/2007 08:48:25 - Revisão: 4.2

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbmt kbvs2005swept kbvs2005applies kbhowtomaster kbscreensaver kbdevstudio KB818359 KbMtpt
Comentários