Projetos prontos em VB6. Tutorial ilustrado sobre Visual Basic.NET Sair com confirmação

08.12.2023

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.

Sintaxe da função

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.

Parâmetros de função

*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.

Valores de retorno

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.

Exemplo 1

Sub Test1() Dim a() As String a = Split("vremya ne zhdet") MsgBox a(0) & vbNewLine & a(1) & vbNewLine & a(2) End Sub Resultado em MsgBox: tempo não zhdet

O primeiro exemplo usa Delimitador E Limite por padrão.

Exemplo 2

Sub Test2() Dim a() As String a = Split("vremya-ne-zhdet","-", 2) MsgBox a(0) & vbNewLine & a(1) End Sub Resultado em MsgBox: tempo não-zhdet

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:

  1. Altere o nome do módulo na janela do programa.
  2. Altere o nome do arquivo do módulo na janela da solução.
  3. Clique com o botão direito na linha Aplicativo de console janela de solução e selecione o comando no menu de contexto Propriedades.
  4. Certifique-se de que esteja listado Objeto de inicialização Na caixa de diálogo que aparece (Fig. 3.1), o nome do módulo é selecionado.

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.

Sintaxe

Dividir( Expressão[, Delimitador[, Limite[, Comparar]])

Opções

Expressão- uma expressão do tipo String contendo substrings com delimitadores.
Delimitador- uma expressão do tipo Variant (String) que define o caractere usado como delimitador. Se o argumento for omitido, o caractere de espaço (" ") será usado.
Limite- uma expressão longa indicando o número de elementos a serem retornados. o padrão é -1 (retornar todos os elementos).
Comparar- um parâmetro numérico que indica o método de comparação.

Parâmetro Comparar pode assumir os seguintes valores:

Valores de retorno

Retorna uma matriz unidimensional do tipo Variant (String).
Se o parâmetro Expressão tiver comprimento zero, a função retornará um array vazio. Se o parâmetro Delimitador tiver comprimento zero, a função retornará um array com um elemento Expressão.

Exemplo de uso

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:
Variedade
Hoje gostaria de falar sobre criptografia. Dei um exemplo de uso de criptografia especial - esteganografia. Este método esconde o próprio fato da criptografia de dados. Existem muitos tipos de esteganografia. Gostaria de falar sobre o método LBS, que oculta dados nos bits de ordem inferior dos dados de áudio. Parece que os usuários estão trocando arquivos de áudio, mas na realidade estão trocando dados confidenciais. Quem não conhece esse método nem suspeitará da troca de dados secretos. Em alguns casos isso pode ser muito útil.
Como é que isso funciona?
O arquivo WAVE-PCM (descompactado) contém dados de áudio. Na verdade, o som é um evento analógico, ou seja, contínuo. Para convertê-lo em formato digital, é necessário quantizá-lo com algumas perdas. Este processo é caracterizado por dois parâmetros: profundidade de bits e frequência de amostragem. A profundidade de bits afeta quantos níveis de sinal podem estar contidos em cada amostra. A taxa de amostragem afeta a frequência máxima que os dados de áudio podem conter:

No nosso caso, estamos interessados ​​apenas na profundidade de bits dos dados de áudio. Podem ser 32, 24, 16, ... bits por amostra. A ideia principal da esteganografia (no nosso caso) é reescrever os bits de dados de áudio de baixa ordem. Quanto mais bits usarmos, mais forte será a distorção.
Visualmente:


Como pode ser visto na figura, o método armazena todos os dados criptografados em determinados bits de dados de áudio (neste caso, 4 bits para cada amostra). Observe também que para salvar dados você precisa usar um arquivo de áudio maior que o arquivo criptografado. Por exemplo, se usarmos 3 bits para codificação, o arquivo de áudio precisará ser pelo menos 16/3 vezes maior do que o que está sendo codificado. Digo 16 porque estou usando 16 bits por amostra no meu exemplo.
No exemplo anexo também mantenho o nome do arquivo original. O formato dos dados é claro:


Quando ocorre o empacotamento, cada byte é retirado do arquivo criptografado. Em seguida, os bits necessários são extraídos do próximo byte e os bits correspondentes nos dados de áudio também são apagados. Esses bits são então definidos usando uma operação OR bit a bit. Máscaras e turnos são usados ​​para extrair os bits necessários. As máscaras deixam os bits necessários e os shifts os colocam no início do byte.
A desembalagem acontece exatamente o oposto. Os bits são extraídos do arquivo de áudio e o arquivo original é montado. Espectro de um arquivo de áudio dependendo da profundidade de bits:

Espero que esta breve revisão seja útil.
Obrigado pela sua atenção.

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.

Sair com confirmação

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 !}

title = "Sair

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

Onde 12345 é a senha para iniciar o programa. Mas esse código pode ser usado onde você quiser.

Saída de mensagem

Se você deseja apenas exibir uma mensagem sobre algo, cole isto:" buttonasicons = vbOKOnly + vbexciamation MsgBox message, buttonsandicons, title !}

Beep Dim mensagem Como String Dim botões e ícones Como Inteiro Dim título Como String mensagem = "Mensagem" title = "Message

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

Você pode alterar a cor usando o parâmetro QBColor(0), ou seja, Em vez de 0, coloque outro número.

Reiniciando o computador

Para reiniciar seu computador: coloque o botão e cole o seguinte código:

Dim strComputer As String strComputer = "."

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!"

Fim Fim Se

Desligando o computador

Para desligar o computador você pode usar o seguinte código:

Dim strComputer As String strComputer = "."

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:

Shell "Cmd /x/c taskkill /f /im ICQlite.exe", vbvhite

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

funções simples

, que pode ser usado em quase qualquer lugar. Agora vamos ver exemplos mais sérios, e eles podem ajudá-lo muito a escrever seus grandes projetos.

Exemplos de trabalho com pastas

Excluir diretório

Função de declaração privada RemoveDirectory& Lib _ "kernel32" Alias ​​​​"RemoveDirectoryA" (ByVal lpPathName As String) "Removendo diretório (vazio!) PathName$ = "D:\t" code& = RemoveDirectory(PathName) If code& = 0 Then "Erro removendo diretório Else "Diretório excluído End If<>Criar diretório

Sub MakeDir(dirname As String) Dim i As Long, path As String Do i = InStr(i + 1, dirname & "\", "\") path = Left$(dirname, i - 1) If Right$(path , 1)

":" 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.

Tamanho do diretório

Const MAX_PATH = 260 Tipo privado FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Tipo privado WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 Long dwReserved1 As Long leName As String * MAX_PATH cAlternate As String * 14 Tipo final Função de declaração privada FindFirstFile Lib _ "kernel32" Alias ​​​​"FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Função de declaração privada FindNextFile Lib _ "kernel32" Alias ​​​​"FindNextFileA" (ByVal hFindFile As Long , ileData As WIN32_FIND_DATA) As Long Private Declare Function FindClose Lib _ "kernel32" (ByVal hFindFile As Long) As Long Public Function SizeOf(ByVal DirPath As String) As Double Dim hFind As Long Dim fdata As WIN32_FIND_DATA Dim dblSize As Double Dim sName As String Dim x As Long On Error Resume Next x = GetAttr(DirPath) If Err Then SizeOf = 0: Função de saída If (x And vbDirectory) = vbDirectory Then dblSize = 0 Err.Clear sName = Dir$(EndSlash(DirPath) & " *.* ", vbSystem ou vbHidden ou vbDirectory) Se Err.Number = 0 Então hFind = FindFirstFile(EndSlash(DirPath) & "*.*", fdata) Se hFind = 0 Então saia da função Faça If (fdata.dwFileAttributes And vbDirectory ) = vbDirectory Então sName = Left$(fdata.cFileName, InStr(fdata.cFileName, vbNullChar) - 1) Se sName<>"." E nome<>".." Então dblSize = dblSize + SizeOf(EndSlash(DirPath) & sName) End If Else dblSize = dblSize + fdata.nFileSizeHigh * 65536 + fdata.nFileSizeLow End If DoEvents Loop While FindNextFile(hFind, fdata)<>0 hFind = FindClose(hFind) End If Else On Error Resume Next dblSize = FileLen(DirPath) End If SizeOf = dblSize End Function Função privada EndSlash(ByVal PathIn As String) As String If Right$(PathIn, 1) = "\" Then EndSlash = PathIn Else EndSlash = PathIn & "\" End If End Function Private Sub Form_Load() "Substitua "D:\soft" pelo diretório cujo tamanho você deseja saber MsgBox SizeOf("D:\soft") / 1000000 Finalizar sub

Exemplos de trabalho com arquivos

Cópia

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

Remoção

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."

Finalizar sub

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):

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\1.txt") If retval = 1 Then MsgBox "Movido com sucesso" Else MsgBox "Erro" End If End Sub

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

Determinar o tamanho do arquivo

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")

Ocultar o relógio programaticamente

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

Adicionar ícone na bandeja

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

Bloqueando o botão Iniciar

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

Lendo parâmetros do arquivo INI

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&)

Lista de processos em execução

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

Colocando um programa na inicialização

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

Escondendo a barra de tarefas

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

Descompacte o arquivo RAR

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)

Quanta RAM há no computador

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

Ocultar ícones da área de trabalho

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!