Utilizando a função Split no VBA Excel, sua sintaxe e parâmetros. Valores retornados pela função Split. Exemplos de uso.
A função Split foi projetada no VBA Excel para dividir uma string em substrings usando marcas delimitadoras especiais. O separador pode ser algo como personagem separado e uma sequência de vários caracteres. A função Split é o inverso da função, que cria uma string a partir de uma matriz de substrings.
Dividir (Expressão ,,,)
O parâmetro obrigatório da função Split é Expressão - se os outros parâmetros não forem especificados explicitamente, seus valores padrão serão usados.
*Se a comparação binária (0 ou CompareMethod.Binary) for usada, a função diferencia maiúsculas de minúsculas. Se uma comparação de texto (1 ou CompareMethod.Text) for usada, a função não diferencia maiúsculas de minúsculas.
A função Split retorna um array unidimensional, indexado de zero, que contém o parâmetro especificado Limite número de substrings. Na maioria das vezes, a função Split é usada com o valor do parâmetro Limite por padrão, igual a -1, quando todas as substrings encontradas na string de origem são retornadas.
O primeiro exemplo usa Delimitador E Limite por padrão.
No segundo exemplo Delimitador= "-", um Limite = 2.
A função Split atribui resultados usando um texto pré-declarado, que pode ser usado na linha de atribuição com ou sem parênteses vazios. Nos exemplos acima, o array é especificado sem parênteses.
Você pode copiar os códigos dos exemplos dados para o módulo VBA do seu trabalho Pastas de trabalho do Excel, veja como eles funcionam. Experimente conectar seus dados para ter uma ideia prática do recurso Split.
Este capítulo apresenta o “arsenal” básico do VB.NET. A maior parte do material se resume a breve visão geral conceitos comuns a todas as linguagens de programação (como variáveis e instruções de loop), e a descrição de tipos básicos de dados, principalmente números diferentes e linhas. Leitores familiarizados com VB6 podem querer dar uma olhada neste capítulo.
Apenas alguns exemplos neste capítulo contêm código real que pode ser usado em programas VB.NET sérios. O fato é que nenhum programa VB.NET sério pode prescindir de objetos baseados em modelos chamados classes, um tópico que abordaremos no Capítulo 4. Começaremos com as construções básicas da linguagem, caso contrário teríamos que nos limitar às construções primitivas. aulas que não têm valor prático. Este capítulo não aborda classes definidas pelo usuário e mostra apenas exemplos básicos de como usar as classes internas do .NET Framework, que são extremamente poderosas.
O que se segue disso? Curiosamente, os programas escritos neste capítulo têm um estilo muito próximo da programação tradicional do início da era BASIC e até mesmo da era Fortran e COBOL que a precedeu (além de algumas construções sintáticas estranhas, mas necessárias). Em particular, ao contrário dos programas dos capítulos posteriores, eles sempre têm início e fim claramente definidos, e o controle é transferido do início ao fim (embora o controle possa ser transferido por comandos especiais).
Conforme dito na introdução, tentaremos apresentar programas escritos no estilo .NET normal, evitando sempre que possível a compatibilidade artificial com VB6.
Cada aplicação VB.NET deve ter um ponto de entrada. O ponto de entrada contém código que é executado automaticamente na inicialização, após o qual o controle é transferido para o restante do código do programa. De forma relativamente simples aplicações gráficas O ponto de entrada pode ser associado ao formulário inicial, como no VB6. Mas, como vimos no Capítulo 1, o código do Windows Forms é bastante complexo e encontrar o ponto de entrada pode ser um desafio. Este capítulo aborda apenas aplicativos de console executados em uma janela de console (como uma janela de sessão do DOS). Sim, o VB.NET facilita a criação de aplicativos de console tradicionais frequentemente usados na programação de scripts do lado do servidor.
O ponto de entrada de um aplicativo de console é o procedimento Subprincipal módulo (análogo ao procedimento Subprincipal em VB6). Se você selecionar o ícone do aplicativo de console ( Aplicativo de console), o VB.NET gera automaticamente um aplicativo "esqueleto" com um ponto de entrada - um procedimento Subprincipal:
Módulo Módulo1 Sub Principal() Módulo End Sub End
Ao contrário do VB6, a primeira linha especifica o nome do módulo (o comando está em negrito). EM neste exemplo o nome padrão Modul el é usado. De acordo com as regras, o nome do módulo deve corresponder ao nome do arquivo. Digamos que você alterou o nome do módulo na primeira linha: Módulo Test1. Ao tentar executar um aplicativo de console, você recebe uma mensagem de erro:
O código de inicialização "Sub Main" foi especificado em "Test.Modulel". mas "Test.Modulel" não foi encontrado
A renomeação de um módulo após sua criação é feita da seguinte maneira:
Por analogia com o VB6, um programa (solução) VB.NET pode consistir em vários módulos, mas a presença de um procedimento Subprincipal permitido apenas em um módulo. O aplicativo termina ao chegar ao comando Finalizar sub procedimentos Subprincipal. Por exemplo, o lendário programa "Hello World" se parece com isto:
Módulo Módulo el Sub Main() Console.WriteLine("Olá mundo") End Sub End Module
Se você executar este programa no IDE, uma janela do DOS com as palavras “Hello world” piscará rapidamente na tela (e desaparecerá imediatamente). A janela fecha quando o comando é processado Finalizar sub.
A função retorna uma matriz unidimensional contendo um número especificado de substrings. Esta funçãoé o inverso da função Join.Parâmetro Comparar pode assumir os seguintes valores:
Private Sub Form_Load() Dim arrMyArray() As String Dim strMyString As String strMyString = "Olá! Como vai você?"
arrMyArray = Split(strMyString) "retorna "Olá!" Debug.Print arrMyArray(0) End Sub Veja também:Olá a todos, neste artigo quero mostrar códigos úteis para pequenos programas. Que você pode usar para escrever seus próprios programas mais sérios, ou você estava procurando exatamente essas funções descritas aqui.
Todos os códigos foram utilizados no ambiente de programação Microsoft Visual Basic v6.0.
O primeiro tipo de programa, ou função, é uma saída com uma mensagem confirmando a saída. Em geral, abra o ambiente de programação Visual Basic, crie um projeto padrão, coloque um botão no formulário, clique no botão e a janela de edição de código será aberta, e você precisará inserir o seguinte código lá:
Beep Dim mensagem Como String Dim botões e ícones Como Inteiro Dim título Como String Dim resposta As String mensagem = "Você quer sair?"" buttonasicons = vbYesNo + vbQuestion response = MsgBox(message, buttonasicons, title) If response = vbYes Then End End If !}
Senha para iniciar o programa<>Dim Senha, Pword Senha = "12345" Pword = InputBox("Digite a senha") If Pword
PassWord Then MsgBox "A senha não está correta" End End If
Saída de mensagem
Se você deseja apenas exibir uma mensagem sobre algo, cole isto:" buttonasicons = vbOKOnly + vbexciamation MsgBox message, buttonsandicons, title !}
Desenhando no formulário
Private Sub Form_MouseDown (botão como inteiro, Shift como inteiro, X como único, Y como único) Form1.CurrentX = X Form1.CurrentY = Y End Sub Private Sub Form_MouseMove (botão como inteiro, Shift como inteiro, X como único, Y como Único) Se Botão = 1 Então Linha (Form1.CurrentX, Form1.CurrentY)-(X, Y), QBColor(0) End If End Sub
Reiniciando o computador
Para reiniciar seu computador: coloque o botão e cole o seguinte código:Set objWMIService = GetObject("winmgmts:" & "(impersonationLevel=impersonate, (Shutdown))!\\" _ & strComputer & "\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem") For Cada ObjOperatingSystem em colOperatingSystems ObjOperatingSystem.Reboot " Para reinicializar Próximo
Private Sub Form_Load() If App.PrevInstance = True Then MsgBox "O projeto já foi iniciado!"
Desligando o computador
Para desligar o computador você pode usar o seguinte código:
Set objWMIService = GetObject("winmgmts:" & "(impersonationLevel=impersonate,(Shutdown))!\\" _ & strComputer & "\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem") For Cada ObjOperatingSystem em colOperatingSystems ObjOperatingSystem.ShutDown "Para desligar Próximo
Encerrando qualquer processo
Para encerrar o processo você pode usar o seguinte código:
Onde, em vez de ICQlite.exe, pode haver qualquer processo. Quanto tempo dura o computador? Abaixo está um exemplo de como você pode determinar o tempo de operação do computador.
Este método
é baseado no uso da biblioteca kernel32, portanto, logo no início do código do formulário, conecte esta DLL. Função de declaração privada GetTickCount Lib "kernel32" () As Long "E no código do botão: Dim a_hora, a_minuto, a_segundo a = Format(GetTickCount() / 1000, "0") "total de segundos a_dias = Int(a / 86400) a = a - a_dias * 86400 a_hora = Int(a / 3600) a = a - a_hora * 3600 a_minuto = Int(a / 60) a_segundo = a - a_minuto * 60 MsgBox "Seu computador está funcionando" & Str(a_dias) & "dias" & Str(a_hora) _ & "horas" & Str(a_minuto) & "minutos" & Str(a_segundo) & "segundos" Nós revisamos
":" And Dir$(path, vbDirectory) = "" Then MkDir path End If Loop Until i >= Len(dirname) End Sub Private Sub Command1_Click() Call MakeDir("C:\Soft\1\2\3\ ") Fim Sub
Estático em execução As Boolean Dim AllDirs As New Collection Dim next_dir As Integer Dim dir_name As String Dim sub_dir As String Dim i As Integer Dim txt As String Se em execução Então em execução = False CmdStart.Enabled = False CmdStart.Caption = "Parando" Else running = True MousePointer = vbHourglass CmdStart.Caption = "Parar" OutText.Text = "" DoEvents next_dir = 1 AllDirs.Add StartText.Text Do While next_dir<= AllDirs.Count dir_name = AllDirs(next_dir) next_dir = next_dir + 1 sub_dir = Dir$(dir_name & "\*", vbDirectory) Do While sub_dir <>"" Se UCase$(sub_dir)<>"PAGEFILE.SYS" e sub_dir<>"." E sub_dir<>".." Então sub_dir = dir_name & "\" & sub_dir Em caso de erro Retomar Próximo If GetAttr(sub_dir) And vbDirectory Then AllDirs.Add sub_dir End If sub_dir = Dir$(, vbDirectory) Loop DoEvents Se não estiver em execução, então Sair Do Loop txt = "" For i = 1 To AllDirs.Count txt = txt & AllDirs(i) & vbCrLf Next i OutText.Text = txt MousePointer = vbDefault unning = False End If
Agora iniciamos o programa, escrevemos no campo de texto StartText: C:\windows e clicamos no botão.
Digamos que temos um arquivo chamado 1.txt na pasta C:\1\ e precisamos copiá-lo para C:\2\ para fazer isso escrevemos o seguinte código:
Cópia do arquivo "C:\1\1.txt","C:\2\1.txt"
Observação! Se o diretório 2 já contiver um arquivo chamado 1.txt, ele será substituído pelo 1.txt do diretório 1.
Função de declaração privada CopyFile Lib _ "kernel32.dll" Alias "CopyFileA" _ (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long Private Sub Command1_Click() " Copiar arquivo C:\1.txt para D :\1.txt. Dim retval As Long " return value "Copie o arquivo retval = CopyFile("C:\1.txt", "D:\1.txt", 1) If retval = 0 Then "If error MsgBox "Não consigo copiar" Else "Se estiver tudo bem MsgBox "Arquivo copiado." End If End Sub
Por exemplo, queremos excluir o arquivo 1.txt da raiz da unidade C:\
Matar("C:\1.txt")
Método API
Função de declaração privada DeleteFile Lib _ "kernel32.dll" Alias "DeleteFileA" (ByVal lpFileName As String) As Long Private Sub Command1_Click() "Excluir arquivo C:\Samples\anyfile.txt Dim retval As Long "Valor de retorno retval = DeleteFile( "C:\1.txt") If retval = 1 Then MsgBox "O arquivo foi excluído com sucesso."
Movendo-se
Você pode, por exemplo, movê-lo assim:
Cópia de arquivo "C:\1.txt","C:\2\1.txt" Matar ("C:\1.txt")
Mas é melhor assim (via API):
Renomeando
Para renomear o arquivo 1.txt localizado em C:\ para 2.txt, você pode usar o seguinte código:
Método API
Função de declaração privada MoveFile Lib _ "kernel32.dll" Alias "MoveFileA" _ (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long Private Sub Command1_Click() Dim retval As Long " valor de retorno retval = MoveFile("C: \1 .txt", "C:\2.txt") Se retval = 1 Then MsgBox "Sucesso" Else MsgBox "Erro" End If End Sub
O tamanho do arquivo pode ser determinado de duas maneiras:
Se o arquivo puder ser aberto com a função OPEN, você poderá usar a função LOF
Dim FileFree As Integer Dim FileSize As Long FileFree = FreeFile Abra "C:\WIN\GENERAL.TXT" para entrada como FileFree FileSize = LOF(FileFree) Fechar FileFree
Ou use a função FileLen
Dim lFileSize As Long FileSize = FileLen("C:\WIN\GENERAL.TXT")
Adicione 2 botões e cole o código:
Opção Função de declaração privada explícita FindWindow Lib _ "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Função de declaração privada FindWindowEx Lib _ "user32" Alias "FindWindowExA" _ (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Declare Function ShowWindow Lib _ "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long Dim hnd As Long Private Sub Command1_Click() ShowWindow hnd, 0 End Sub Private Sub Command2_Click() ShowWindow hnd, 1 End Sub Private Sub Form_Load() hnd = FindWindow("Shell_TrayWnd", vbNullString) hnd = FindWindowEx(hnd, 0, "TrayNotifyWnd", vbNullString) hnd = FindWindowEx( hnd, 0, "TrayClockWClass", vbNullString) Command1.Caption = "Ocultar relógio" Command2.Caption = "Mostrar relógio" End Sub
Adicione um módulo e cole o código nele:
Declarar função Shell_NotifyIconA Lib _ "SHELL32" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) Como inteiro Public Const NIM_ADD = 0 Public Const NIM_MODIFY = 1 Public Const NIM_DELETE = 2 Public Const NIF_MESSAGE = 1 Public Const NIF_ICON = 2 Public Const NIF_TIP = 4 Digite NOTIFYICONDATA cbSize As Long hWnd As Long uID As Long uFlags As Long uCallbackMessage As Long hIcon As Long szTip As String * 64 End Type Public Function SetTrayIcon(Mode As Long, hWnd As Long, Icon As Long, tip As String) As Long Dim nidTemp As NOTIFYICONDATA nidTemp.cbSize = Len (nidTemp) nidTemp.hWnd = hWnd nidTemp.uID = 0& nidTemp.uFlags = NIF_ICON Ou NIF_TIP nidTemp.uCallbackMessage = 0& nidTemp.hIcon = Ícone nidTemp.szTip = tip & Chr$( 0) SetTrayIcon = Shell_NotifyIconA (Mode, nidTemp) Função final
Para usar, insira no código do formulário:
Private Sub Form_Load() SetTrayIcon NIM_ADD, Me.hWnd, Me.Icon, "Test" End Sub "Para excluir um Sub Privado Command1_Click() SetTrayIcon NIM_DELETE, Me.hWnd, 0&, "" End Sub
Função de declaração privada FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName como string, ByVal lpWindowName como string) As Long Função de declaração privada FindWindowEx Lib "user32" Alias "FindWindowExA" _ (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Declare Function EnableWindow Lib "user32" _ (ByVal hwnd As Long, ByVal fEnable As Long) As Long Public Sub EnableStartButton (opcional habilitado como Boolean = True) Dim lHwnd As Long " find hWnd lHwnd& = FindWindowEx(FindWindow("Shell_TrayWnd", ""), 0&, "Button", vbNullString) Call EnableWindow(lHwnd&, CLng(Enabled)) End Sub Private Sub Command1_Click() EnableStartButton False "botão INICIAR está desabilitado End Sub Private Sub Command2_Click() EnableStartButton True "O botão INICIAR não está desabilitado End Sub
O programa se conecta ao FTP e o arquivo ini contém os parâmetros - servidor, login, porta, senha.
Primeiro, crie um arquivo INI:
Servname=servidor usern=Login pwd=senha porta=porta
Deve ser colocado na pasta do programa. Em seguida, insira no módulo:
Função de declaração privada WritePrivateProfileString Lib _ "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName como string, ByVal lpKeyName como string, _ ByVal lpString como string, ByVal lpFileName como string) As Long Função de declaração privada GetPrivateProfileString Lib _ "kernel32" Alias "GetP rivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, _ ByVal lpDefault As String, ByVal lpReturnedString As String, _ ByVal nSize As Long, ByVal lpFileName As String) As Long Public Function ReadIni(Razdel As String, Param) As String ReadIni = GetValue (Razdel, Param, App.Path & "\test.ini", "0") Função final Função privada GetValue (seção ByVal como string, _ chave ByVal como string, ByVal fFileName como string, opcional ByVal DefaultValue As String = vbNullString) As String Dim Data As String Data = String$(1000, Chr$(0)) If GetPrivateProfileString(Section, Key, DefaultValue, Data, 1000, fFileName) > 0 Então GetValue = Left$(Data, InStr (Data$, Chr $(0)) - 1) Else GetValue = DefaultValue End If Exit Function End Function
Em seguida cole no código do formulário:
Função de declaração privada InternetOpen Lib _ "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal nAccessType As Long, ByVal sProxyName As String, _ ByVal sProxyBypass As String, ByVal nFlags As Long) As Long Private Declare Function InternetConnect Lib _ "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, _ ByVal nServerPort As Integer, ByVal sUserName As String, ByVal sPassword As String, ByVal nService As Long, _ ByVal dwFlags As Long , ByVal dwContext As Long) As Long Private Declare Function FtpPutFile Lib _ "wininet.dll" Alias "FtpPutFileA" (ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _ ByVal lpszRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean Private Declare Function FtpGetFile Lib _ "wininet.dll" Alias "FtpGetFileA" (ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, _ ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes As Long, _ ByVal dwFlags As Long, ByVal d wContext As Long ) As Boolean Private Declare Function InternetCloseHandle Lib _ "wininet.dll" (ByVal hInet As Long) As Integer Dim rc& Dim rs&
E no código do botão:
rc& = InternetOpen("", 0, vbNullString, vbNullString, 0) rs& = InternetConnect(rc&, ReadIni("Geral", "servname"), "0", _ ReadIni("Geral", "usern"), ReadIni( "Geral", "pwd"), 1, 0, 0) If FtpGetFile(rs&, "Seu arquivo.txt", "caminho onde", False, 0, 1, 0) = False Então encerrar chamada InternetCloseHandle(rs&) Chamada InternetCloseHandle(rc&)Adicione uma Listbox e 1 botão, insira o seguinte código:
Opção Função de declaração privada explícita CreateToolhelpSnapshot Lib _ "Kernel32" Alias "CreateToolhelp32Snapshot" _ (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Função de declaração privada ProcessFirst Lib _ "Kernel32" Alias "Process32First" _ (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Function ProcessNext Lib _ "Kernel32" Alias "Process32Next" _ (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long ) Privado Const TH32CS_SNAPPROCESS As Long = 2& Privado Const MAX_PATH As Integer = 260 Tipo Privado PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long ExeFile como string * MAX_PATH Tipo final Di m hSnapShot As Long Dim uProcess As PROCESSENTRY32 Dim r As Long Private Sub Command1_Click() List1.Clear hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) Se hSnapShot = 0 Então saia do Sub End If uProcess.dwSize = Len(uProcess) r = ProcessFirst (hSnapShot, uProcess) Do While r List1.AddItem uProcess.szExeFile r = ProcessNext (hSnapShot, uProcess) Loop Call CloseHandle (hSnapShot) End Sub
Para que o programa carregue com o Windows, como alguns outros programas, você pode usar o registro:
Adicione 2 botões e o seguinte código:
Private Sub Command1_Click() "Entrada de registro Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\Nome do seu programa", _ "Caminho para o seu programa" End Sub Private Sub Command2_Click() "Excluir do registro Set Reg = CreateObject ("WScript.Shell") Reg.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\Nome do seu programa" End Sub
E para que o programa carregue junto com o Windows, mesmo em modo de segurança, então este código:
Primeiro, um método mais sério (faça isso apenas no caso cópia de segurança registro).
Private Sub Command1_Click() Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell", _ "Caminho para o seu programa" End Sub Private Sub Command2_Click()" Isto é para recuperação Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell", _ "Explorer.exe," End Sub
Bem, uma maneira simples.
Privado Sub Command1_Click() Definir Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit", _ "C:\\WINDOWS\\system32\\userinit.exe ,Caminho para o seu programa" End Sub Private Sub Command2_Click()"Para restaurar Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit", _ "C: \\WINDOWS\\system32\\userinit.exe," End Sub
Adicione 2 botões e cole o código:
Função de declaração privada SetWindowPos Lib "user32" (ByVal hwnd As Long, _ ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, _ ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Private Declare Função FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName como String, ByVal lpWindowName como String) As Long Const SWP_HIDEWINDOW = &H80 Const SWP_SHOWWINDOW = &H40 "Ocultar Sub Comando Privado1_Click() hwnd1 = FindWindow("Shell_traywnd", " ") Chame SetWindowPos(hwnd1, 0, 0, 0, 0, 0, SWP_HIDEWINDOW) End Sub "Mostra Sub Privado Command2_Click() hwnd1 = FindWindow("Shell_traywnd", "") Chame SetWindowPos(hwnd1, 0, 0, 0, 0, 0, SWP_SHOWWINDOW) Fim Sub
Para descompactar Arquivo RAR você pode usar o seguinte código:
WinRarApp = "C:\Arquivos de programas\WinRAR\WinRAR.exe x -o+" iPath = "C:\" iArhivName = "Nome do arquivo.rar" adr = WinRarApp & " """ & iPath & iArhivName & """ " "" & iPath & """ " RetVal = Shell(adr, vbHide)
Adicione um botão e cole o seguinte código:
Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As TMemoryStatus) Private Type TMemoryStatus dwLength As Long dwMemoryLoad As Long dwTotalPhys As Long dwAvailPhys As Long dwTotalPageFile As Long dwAvailPageFile As Long dwTotalVirtual As Long dwAvailVirtual As Long End Type Dim s As emoryStatus Privado Subcomando1_Click( ) ms.dwLength = Len(ms) Chame GlobalMemoryStatus(ms) MsgBox "Total:" & ms.dwTotalPhys & vbCr & "Free:" _ & ms.dwAvailPhys & vbCr & "Usado em%:" & ms.dwMemoryLoad End Sub
Isso é feito da seguinte maneira. Adicione 2 botões e cole o seguinte código:
Função de declaração privada ShowWindow& Lib "user32" (ByVal hwnd&, ByVal nCmdShow&) Função de declaração privada FindWindow Lib _ "user32" Alias "FindWindowA" (ByVal lpClassName como string, ByVal lpWindowName como string) As Long Const SW_HIDE = 0 Const SW_NORMAL = 1 Private Sub Command1_Click() Dim hHandle As Long hHandle = FindWindow("progman", vbNullString) Chame ShowWindow(hHandle, SW_HIDE) End Sub Private Sub Command2_Click() Dim hHandle As Long hHandle = FindWindow("progman", vbNullString) Chame ShowWindow (hHandle, SW_NORMAL) End Sub
Usando o botão Command1, os ícones ficam ocultos, Command2 - eles aparecem.
Isso é tudo para mim, espero que os exemplos acima sejam úteis para você, tchau!