Neste artigo vamos mostrar como podemos bloquear e desbloquear uma pasta selecionada pelo usuário no sistema de arquivos do Windows usando a linguagem VB .NET. |
Neste artigo vamos executar alguns comandos em lote usando a função Shell para bloquear e desbloquear uma pasta selecionada pelo usuário usando o controle FolderBrowserDialog.
A função Shell executa um programa executável e retorna um inteiro contendo a identificação do processo do programa se o programa ainda está funcionando.
O valor de retorno da função Shell depende se o programa denominado em PathName ainda estiver em execução quando o Shell retorna. Se você definir Wait como True e o programa terminar antes que o tempo limite expire, Shell retornará zero. Se o tempo limite expirar, ou se você omitir Wait ou defini-lo como False, o Shell retorna a identificação do processo do programa. A identificação do processo é um número exclusivo que identifica o programa em execução.
A sintaxe dessa função é a seguinte:
Public Function Shell(ByVal PathName As String, Optional ByVal Style As AppWinStyle = AppWinStyle.MinimizedFocus, Optional ByVal Wait As Boolean = False, Optional ByVal Timeout As Integer = -1 ) As Integer
O controle FolderBrowserDialog permite abrir um janela de diálogo exibindo diretórios que podem ser selecionados pelo usuário. O controle não exibe arquivos, somente diretórios.
As principais propriedades do controle FolderBrowserDialog são:
Propriedade | Descrição |
Description | Fornece uma mensagem de descrição na caixa de diálogo |
RootFolder | Indica o diretório raiz a partir da onde a caixa de diálogo começará a exibição dos demais diretórios. |
SelectedPath | Indica a pasta selecionada pelo usuário |
ShowNewFolderButton | Informa se o botão - Criar Nova Pasta - será exibido na caixa de diálogo |
ShowDialog | Exibe a caixa de diálogo |
Recursos usados
Visual Studio 2013 Express for Windows desktop
Criando o projeto no VS 2013
Abra o Visual Studio 2013 Express for Windows desktop e clique em New Project;
Selecione a linguagem VB .NET, o template Windows Forms Application, informe o nome Bloqueando_Pasta e clique em OK;
No formulário Form1.vb inclua os seguintes controles:
Label - Text = Pasta de Destino
Label - Text = Nome da Pasta a Bloquear/Desbloquear
TexBox - txtPastaDestino
TexBox - txtNomePasta
Button - btnProcurar
Button - btnSair
Button - btnBloquear
Button - btnDesbloquear
FolderBrowseDialog - fbd1
Disponha os controles conforme o leiaute da figura abaixo:
Agora vamos definir o código abaixo no formulário form1.vb nos eventos Click dos botões Bloquear, Desbloquear, Procurar e Sair:
Imports System.IO
Public Class Form1
Private Sub btnBloquear_Click(sender As Object, e As EventArgs) Handles btnBloquear.Click
Try
Dim text1 As String = ".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}"
Shell("cmd /c" & "ren " & txtPastaDestino.Text & " " & txtNomePasta.Text & text1)
Shell("cmd /c" & "attrib +s +h " & txtPastaDestino.Text & ".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}\*.*" & " /S /D")
Shell("cmd /c" & "attrib +s +h " & txtPastaDestino.Text & ".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}" & " /S /D")
MessageBox.Show("Pasta Bloqueada com sucesso.")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub btnDesbloquear_Click(sender As Object, e As EventArgs) Handles btnDesbloquear.Click
Try
Dim text1 As String = ".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}"
Shell("cmd /c" & "attrib -s -h " & txtPastaDestino.Text & ".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}" & " /S /D")
Shell("cmd /c" & "attrib -s -h " & txtPastaDestino.Text & ".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}\*.*" & " /S /D")
System.Threading.Thread.Sleep(1000)
Shell("cmd /c" & "ren " & txtPastaDestino.Text & text1 & " " & txtNomePasta.Text)
MessageBox.Show("Pasta Desbloqueada com sucesso.")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub btnProcurar_Click(sender As Object, e As EventArgs) Handles btnProcurar.Click
Dim last As String
Try
fbd1.ShowDialog()
txtPastaDestino.Text = fbd1.SelectedPath
last = Path.GetFileName(fbd1.SelectedPath)
txtNomePasta.Text = last
txtPastaDestino.Text = txtPastaDestino.Text.Replace(".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}", "")
txtNomePasta.Text = txtNomePasta.Text.Replace(".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}", "")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub btnSair_Click(sender As Object, e As EventArgs) Handles btnSair.Click
Me.Close()
End Sub
End Class
|
No código acima temos que:
1- No evento Click do botão Procurar estamos usando o controle FolderBrowserDialog para selecionar uma pasta do sistema de arquivos.
2- No evento Click do botão btnBloquear estamos executando o comando Shell para bloquear a pasta selecionada; Aqui abrimos e executando o shell e executamos um comando no prompt de comando que irá primeiro alterar o nome da pasta e depois escondê-la, isto bloqueia a pasta.
3- No evento Click do botão btnDesBloquear estamos executando o comando Shell para desbloquear a pasta bloqueada revertendo o processo.
Executando o projeto e clicando no botão Procurar teremos a janela Procurar Pasta onde selecionamos a pasta que desejamos bloquear:
Após selecionar a pasta, clicando no botão Bloquear teremos a execução do Shell e a mensagem de alerta informando que a pasta esta bloqueada.
Podemos verificar mantendo a janela do Windows Explorer aberta e observar a pasta, que agora apresenta um cadeado como ícone.
Atenção, o processo na verdade oculta a pasta por isso esteja certo da localização da pasta para não perdê-la.
Pegue o projeto completo aqui : Bloqueando_Pastas.zip
Mat 7:15 Guardai-vos dos falsos profetas, que vêm a vós disfarçados em ovelhas, mas interiormente são lobos devoradores.
Mat 7:16 Pelos seus frutos os conhecereis. Colhem-se, porventura, uvas dos espinheiros, ou figos dos abrolhos?
Mat 7:17 Assim, toda árvore boa produz bons frutos; porém a árvore má produz frutos maus.
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: