ATIVAR PROTECAO DE TELA

CRISLUFT 17/12/2013 02:24:54
#432170
Gostaria de saber como ativar a proteção de tela em VB.NET.
Gostaria de saber explicativamente onde colocar cada variavel e como chamá-la no Form_Load
PROFESSOR 29/12/2013 23:55:47
#432519
Bom, a proteção de tela é um conjunto de rotinas do Windows, que são acessíveis por meio de API. Basicamente, a biblioteca User32.
Essa biblioteca possui um [Ô]sem número[Ô] de constantes, de funções e de rotinas, que permitem aos aplicativos que manipulem uma enormidade de coisas relacionadas ás janelas do Windows, objetos OLE, clipboard, teclado e muito mais.
Se eu começar á explicar isso tudo, provavelmente finalizo no natal de 2020.

Mas basta dizer, creio, que você deve declarar as funções de API que a sua aplicação venha á utilizar e que não sejam nativas da linguagem, antes de usar. Para saber como fazer isso, você precisa conhecer essas bibliotecas, suas funções, suas estruturas e suas constantes.

Uma boa opção, mesmo hoje em dia, é baixar e instalar o API-Guide, da All API. A alternativa é acompanhar o MSDN á fundo.

No caso do ScreenSaver, é bem simples, na verdade. Criando uma classe, você poderá [Ô]chamar[Ô] suas funções e rotinas á partir de qualquer módulo, formulário ou classe. Se essa classe possuir rotinas e funções marcadas como [Ô]Shared[Ô], você não precisará instanciar a classe (Dim instância as New Classe), pode usar seus métodos diretamente, como se fosse um módulo ( * - toda programação requer cuidado e atenção ).

Por exemplo, observe a classe abaixo:

[ô] - Classe que mantém rotinas da API do Windows.
Public Class WindowsOS
[ô]Carrega o ponteiro da área de desktop do usuário logado ao Windows.
Private Declare Function GetDesktopWindow Lib [Ô]user32[Ô] () As Integer
[ô]Envia mensagens ao Windows, normalmente sobre janelas e outras funções da API.
Private Declare Function SendMessage Lib [Ô]user32[Ô] Alias [Ô]SendMessageA[Ô] (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByRef lParam As Integer) As Integer
[ô]Rotina [Ô]customizada[Ô] para mostrar o ScreenSaver do usuário.
Public Shared Sub StartScreenSaver()
Try
SendMessage((GetDesktopWindow()), &H112, &HF140, 0)
Catch ex As Exception
End Try
End Sub
End Class


Digamos que em seu formulário você codifique:
Protected Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load
WindowsOS.StartScreenSaver()
End Sub


Assim que o formulário for carregado, o ScreenSaver que estiver ativo pelo usuário será aberto. Caso o usuário não tenha selecionado nenhum ScreenSaver para sua área de trabalho, nada será mostrado, mas isso é bastante bom, pois, por questões de segurança, é sempre o usuário quem deve definir como sua área de trabalho funciona, e não um aplicativo. Assim, a função StartScreenSaver foi criada para ativar o ScreenSaver, mas não para listar quais ScreenSaver estão instalador e nem para selecionar um ScreenSaver.

Atenção:

Várias rotinas, como as que eu citei, são baseadas em bibliotecas que já existem desde 1998, e que podem não existir, ou podem estar diferentes, nas versões subsequentes do Windows. Desta forma, é sempre interessante sempre verificar se uma biblioteca foi continuada ou não. A User32, por ser de 32 bits, não se localiza nas versões mais recentes do Windows como o era nas mais antigas. Ela é uma biblioteca legada, e para ser executada, pode requerer/requer privilégios. Assim, ao executar um projeto ou executável que chame rotinas da User32 no Windows Vista, no Windows 7 ou no Windows 8, lembre-se: [Ô]Run As Administrator[Ô].
CRISLUFT 03/01/2014 18:06:58
#432632
Funcionou muito bem, tu é um gênio!
Faça seu login para responder