Formatando com o VB


Vamos usar uma chamada a API , que muita gente talvez não saiba que exista. Abaixo temos a função SHFormatDrive que não esta bem documentada. (Veja o artigo da microsoft) Com ela podemos formatar os discos usados no sistema.

Public Declare Function SHFormatDrive Lib "shell32" (ByVal hWnd As Long, ByVal Drive As Long, _ ByVal   fmtID As Long, ByVal Options As Long) As Long

Vejamos os parâmetros usados pela função :

Hwnd -  O identificador usado para o seu formulário que é chamado quando a função é executada. Após a chamada da função o seu formulário somente irá receber o foco quando a caixa de diálogo que a função abriu for fechada.

Drive - O número do drive que você quer formatar . 0  identifica o drive A: 1 o drive  B:, 2 o drive C, etc. Para identificar o drive usamos a função abaixo:

LngDrive = (Asc("A") - 65)

ASC("A") irá retornar o codigo da letra . Assim "A" retorna 65 e lngDrive se torna 0 . Percebeu ?

fmtID - Este parâmetro pode ser usado com o valor padrão - &HFFFF.- 

Public Const FORMATA_PADRAO = &HFFFF 

Options - Indica o tipo de formatação . Temos três tipos possíveis : rápida , completa e copia dos arquivos do sistema. Para chamar a função atribuimos as seguintes constantes:

Public Const FORMATA_RAPIDO = &H0     
Public Const FORMATA_COMPLETO = &H1   
Public Const FORMATA_SISTEMA = &H2    

Agora vamos mostrar em um projeto como usar a função.

Crie um novo projeto e no projeto define um formulário como o mostrado a seguir:

A seguir insira o seguinte código no formulário:

General Declarations 

Public TIPO As Long

Private Sub Command1_Click() 'codigo do botão formatar

If Option1.Value Then
  TIPO = FORMATA_RAPIDO
ElseIf Option2.Value Then
  TIPO = FORMATA_COMPLETO
ElseIf Option3.Value Then
  TIPO = FORMATA_SISTEMA
End If

Dim LngRetorno As Long
Dim LngDrive As Long

LngDrive = (Asc("A") - 65) '0 - drive A 1- drive B 2- drive C

LngRetorno = SHFormatDrive(hWnd, LngDrive, FORMATA_PADRAO, TIPO)

End Sub

Private Sub Command2_Click() 'encerra o programa
   End
End Sub

Private Sub Form_Load() 'carrega a combo 
  Combo1.AddItem " 1.44 - 3,5 "
  Combo1.AddItem " 720 - 3,5 "
  Combo1.ListIndex = 0
End Sub

Insira um módulo ao seu projeto e a seguir o seguinte código no módulo:

'para formatar o drive
Public Declare Function SHFormatDrive Lib "shell32" (ByVal hWnd As Long, ByVal Drive As Long, ByVal fmtID As Long, ByVal Options As Long) As Long

'para saber se o drive é do tipo removível ( retorna 2)
Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Public Const FORMATA_RAPIDO = &H0 'para formatacao rapida
Public Const FORMATA_COMPLETO = &H1 'para foramtacao completa
Public Const FORMATA_SISTEMA = &H2 'para copiar arquivos do sistema
Public Const FORMATA_PADRAO = &HFFFF 'constante padrao definida

Ao executar o projeto você obterá o seguinte resultado:

Caixa de diálogo para formatação Resultado final da formatação

Espero que tenham gostado...  Então, até a próxima dica...;-)