VB .NET - Bloqueando a estação de trabalho
O sistema operacional Windows fornece a possibilidade de bloquear a estação de trabalho impedindo o acesso de usuários não autorizados. Para desbloquear a estação o usuário tem que fornecer seu login e senha.
Os usuários do Microsoft Windows podem bloquear seu computador para evitar acesso não autorizado usando o menu que aparece ao pressionar as teclas Ctrl-Alt-Del, ou pressionando as tecla Windows+L. Isso oculta os aplicativos atualmente em execução e ainda impede a interação com eles até a estação de trabalho ser desbloqueada usando uma senha.
Você pode recriar essa função por meio de programação em uma aplicação VB.NET usando o recurso Platform Invocation Services (P/Invoke) e a função LockWorkStation da API do Windows.
A função LockWorkStation é uma função simples que não aceita parâmetros e retorna um valor booleano. O valor de retorno é true se o bloqueio for bem sucedido e false se o computador não pode ser bloqueado.
Há várias razões para que o bloqueio pode estar indisponíveis, dentre elas temos:
Portanto a função LockWorkStation é acessível apenas por processos em execução na área de trabalho interativa e o usuário deve estar conectado, e a estação de trabalho não pode estar bloqueada.
Usando LockWorkStation
Abra o Visual Basic 2010 Express Editon e crie um novo projeto do tipo Windows Forms Application com o nome BloquearEstacao;
No formulário form1.vb inclua um controle Button (btnBloquear);
A seguir para usar a função LockWorkStation primeiro você deve declará-la. Antes de adicionar o código para a função, adicione o seguinte usando diretiva para simplificar o acesso aos atributos P/Invoke no início do formulário:
Imports System.Runtime.InteropServices
Após isso podemos adicionar a declaração da função API para uma classe ou no próprio formulário conforme o código abaixo:
<DllImport("user32.dll", SetLastError:=True)> _ Private Shared Function LockWorkStation() As <MarshalAs(UnmanagedType.Bool)> Boolean End Function |
Para bloquear a estação de trabalho, podemos chamar a função. No código abaixo o método LockWorkStation é chamado no evento CLick do botão de comando e seu valor de retorno está marcada por uma instrução if.
Se o resultado for verdadeiro, nenhuma ação adicional é necessária. Se ela é falsa, uma caixa de mensagem é exibida, indicando que a tentativa de bloqueio falhou.
Private Sub btnBloquear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBloquear.Click If Not LockWorkStation() Then MessageBox.Show("Não foi possível bloquear a estação de trabalho") Else MessageBox.Show("Estação de trabalho bloqueada") End If End Sub |
A versão para a linguagem C# (Visual C# 2010) é dada a seguir:
1- Declaração da API
[DllImport("user32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool LockWorkStation(); |
2- Definição da função
if (!LockWorkStation()) { MessageBox.Show("Não foi possível bloquear a estação de trabalho"); } |
Pegue o projeto completo aqui: BloquearEstacaoVBNET.zip
1Ts 3:5
Por isso também, não podendo eu esperar mais, mandei saber da vossa fé, receando que o tentador vos tivesse tentado, e o nosso trabalho se houvesse tornado inútil.1Ts 3:6
Mas agora que Timóteo acaba de regressar do vosso meio, trazendo-nos boas notícias da vossa fé e do vosso amor, dizendo que sempre nos tendes em afetuosa lembrança, anelando ver-nos assim como nós também a vós;1Ts 3:7
por isso, irmãos, em toda a nossa necessidade e tribulação, ficamos consolados acerca de vós, pela vossa fé,1Ts 3:8
porque agora vivemos, se estais firmes no Senhor.Referências: