Exibindo informações do sistema II


Já mostramos como usar algumas funções para exibir informações sobre o sistema. Vamos mostrar uma outra forma de resolver o mesmo problema. Nela você não vai precisar  codificar função alguma. Vai usar o programa Msinfo32.exe/Msinfo.exe da Microsoft que faz o mesmo serviço e de graça .(Bem ... quase de graça...)

Vamos criar um formulário com um botão que quando clicado ativará o programa Msinfo32.exe/Msinfo.exe . Só tem um problema , nem sempre o arquivo Msinfo32.exe/Msinfo.exe está presente na máquina do usuário. Seu trabalho será verificar se o arquivo esta presente e se estiver o botão de comando que ativa o programa será habilitado , caso contrário permanecerá invisível.

Vamos ao código explicado seção por seção :

'----------------------------------------------------------------
' frmsobre - Demonstra como utilizar um componente do sistema
' verificando sua existencia
'----------------------------------------------------------------
Option Explicit
Private WinDir As String
#If Win32 Then
   Const SYSINFO = "msinfo32.exe"
   Private Declare Function GetWindowsDirectory& Lib "Kernel32" _
   Alias "GetWindowsDirectoryA" (ByVal buffer$, ByVal bufLen&)
#Else
  Const SYSINFO = "msinfo.exe"
  Private Declare Function GetWindowsDirectory% Lib "Kernel" _
  (ByVal buffer$, ByVal bufLen%)
#End If
' '----------------------------------------------------------------
' Carrega o form e verifica se habilita o botão para acionar as
' informacoes.
'----------------------------------------------------------------

Private Sub Form_Load()
  'atribui o icone do formulario ao controle image
  img.Picture = Me.Icon
  ' centraliza o formulario
  Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2 'No VB6 é dispensável
  ' obtem o diretorio do windows
  WinDir = Space(2048)
  WinDir = Left(WinDir, GetWindowsDirectory(WinDir,Len(WinDir))) & "\"
  'Se o arquivo msinfo32 existir habilita ou nao o botao
  cmdSysInfo.Visible = FileExists(WinDir & SYSINFO)
End Sub
' determina se o arquivo existe
Private Function FileExists(sFileName As String) As Boolean
   On Error Resume Next
   FileExists = IIf(Dir(sFileName) <> "", True, False)
End Function
' Inicia ao programa para obter informacoes do sistema
Private Sub cmdSysInfo_Click()
   Shell WinDir & SYSINFO, vbNormalFocus
End Sub
Private Sub cmdOk_Click()
   Unload Me
End Sub

Ao executar o seu projeto , se o arquivo Msinfo32.exe/Msinfo.exe for encontrado iremos obter o seguinte: ( o botão informações aparece habilitado)

Quando você clicar no botão Informações ativará o programa que obtêm informações do sistema e irá obter a seguinte tela: (é claro que para você vai ser diferente...)

Para ver a dica anterior clique aqui - Exibindo informações sobre o  sistema.

Observe que esta pequena dica aborda alguns tópicos interessantes que você pode usar em seus sistemas.

Até a próxima dica...