Vb6 primeri programov z razdelitvijo. Ilustrirana vadnica o Visual Basic.NET. Skrivanje opravilne vrstice


Pozdravljeni vsi skupaj!
Danes bi rad govoril o kriptografiji. Naredil sem primer uporabe posebne kriptografije - steganografije. Ta metoda skriva samo dejstvo šifriranja podatkov. Obstaja veliko vrst steganografije. Rad bi spregovoril o metodi LBS, ki skriva podatke v nižjih bitih zvočnih podatkov. Videti je, kot da si uporabniki izmenjujejo zvočne datoteke, v resnici pa izmenjujejo občutljive podatke. Kdor ne pozna te metode, ne bo niti posumil na izmenjavo tajnih podatkov. V nekaterih primerih je to lahko zelo koristno.
Kako deluje?
Datoteka WAVE-PCM (nestisnjena) vsebuje zvočne podatke. Pravzaprav je zvok analogni dogodek, tj. neprekinjeno. Če ga želite pretvoriti v digitalno obliko, ga morate kvantizirati z nekaj izgubami. Za ta proces sta značilna dva parametra: bitna globina in frekvenca vzorčenja. Bitna globina vpliva na to, koliko nivojev signala lahko vsebuje vsak vzorec. Hitrost vzorčenja vpliva na največjo frekvenco, ki jo lahko vsebujejo zvočni podatki:

V našem primeru nas zanima samo bitna globina zvočnih podatkov. Lahko je 32, 24, 16, ... bitov na vzorec. Glavna ideja steganografije (v našem primeru) je prepisati bite nizkega reda zvočnih podatkov. Več bitov kot uporabimo, močnejša bo distorzija.
Vizualno:


Kot je razvidno iz slike, metoda shrani vse šifrirane podatke v določene bite zvočnih podatkov (v tem primeru 4 bite za vsak vzorec). Upoštevajte tudi, da morate za shranjevanje podatkov uporabiti zvočno datoteko, ki je večja od šifrirane datoteke. Na primer, če za kodiranje uporabimo 3 bite, bo morala biti zvočna datoteka vsaj 16/3-krat večja od tistega, kar se kodira. Pravim 16, ker v svojem primeru uporabljam 16 bitov na vzorec.
V priloženem primeru ohranjam tudi izvirno ime datoteke. Format podatkov je jasen:


Ko pride do pakiranja, se vsak bajt vzame iz šifrirane datoteke. Nato se potrebni biti ekstrahirajo iz naslednjega bajta, počistijo pa se tudi ustrezni biti v zvočnih podatkih. Ti biti se nato nastavijo z uporabo bitne operacije ALI. Maske in premiki se uporabljajo za ekstrahiranje zahtevanih bitov. Maske pustijo zahtevane bite, premiki pa jih postavijo na začetek bajta.
Razpakiranje se zgodi ravno obratno. Biti se izvlečejo iz zvočne datoteke in izvirna datoteka se sestavi. Spekter zvočne datoteke glede na bitno globino:

Upam, da bo ta kratek pregled koristen.
Hvala za vašo pozornost.

Pozdravljeni vsi, v tem članku vam želim pokazati uporabne kode za majhne programe. S katerimi lahko pišete svoje resnejše programe ali pa ste iskali točno te funkcije, ki so tukaj opisane.

Vse kode so bile uporabljene v programskem okolju Microsoft Visual Basic v6.0.

Izhod s potrditvijo

Prva vrsta programa ali funkcije je izhod s sporočilom, ki potrdi izhod. Na splošno odprite programsko okolje Visual Basic, ustvarite standardni projekt, nato postavite en gumb na obrazec, kliknite na gumb in odprlo se vam bo okno za urejanje kode, v katerega morate vstaviti naslednjo kodo:

Beep Dim message As String Dim buttonsandicones As Integer Dim title As String Dim response As String message = "Želite iti ven?" naslov = "Izhod" buttonasicons = vbYesNo + vbQuestion response = MsgBox(message, buttonasicons, title) If response = vbYes Then End End If !}

Geslo za zagon programa

Dim Password, Pword PassWord = "12345" Pword = InputBox("Vnesite geslo") Če je Pword<>PassWord Then MsgBox "Geslo ni pravilno" End End If

Kjer je 12345 geslo za zagon programa. Toda to kodo lahko uporabite kjerkoli želite.

Izhod sporočila

Če želite samo prikazati sporočilo za nekaj, potem prilepite to:

Beep Dim message As String Dim buttonsandicones As Integer Dim title As String message = "Message" title = "Message" buttonasicons = vbOKOnly + vbexciamation MsgBox message, buttonsandicons, title !}

Risanje na obrazcu

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Form1.CurrentX = X Form1.CurrentY = Y End Sub Private Sub Form_MouseMove(Button Kot Integer, Shift Kot Integer, X Kot Single, Y Kot Single) If Button = 1 Then Line (Form1.CurrentX, Form1.CurrentY)-(X, Y), QBColor(0) End If End Sub

Barvo lahko spremenite s parametrom QBColor(0), tj. Namesto 0 vnesite drugo številko.

Ponovni zagon računalnika

Za ponovni zagon računalnika: postavite gumb in prilepite naslednjo kodo:

Dim strComputer As String strComputer = "." Za Vsak ObjOperatingSystem V colOperatingSystems ObjOperatingSystem.Reboot " Za ponovni zagon Naprej

Zagon programa v enem izvodu

Naslednji primer vam bo pomagal, da se program zažene samo enkrat, tj. če se znova zažene, bo prikazalo ustrezno sporočilo. V kodo obrazca vnesite naslednje:

Private Sub Form_Load() If App.PrevInstance = True Then MsgBox "Projekt se je že začel!" Konec Konec Če

Izklop računalnika

Za izklop računalnika lahko uporabite naslednjo kodo:

Dim strComputer As String strComputer = "." Za Vsak ObjOperatingSystem V colOperatingSystems ObjOperatingSystem.ShutDown "Za zaustavitev Naprej

Končanje katerega koli postopka

Za prekinitev postopka lahko uporabite naslednjo kodo:

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

Kjer je namesto ICQlite.exe lahko katerikoli proces.

Kako dolgo zdrži računalnik?

Spodaj je primer, kako lahko določite čas delovanja računalnika. Ta metoda temelji na uporabi knjižnice kernel32, zato na samem začetku kode obrazca povežite ta DLL.

Private Declare Function GetTickCount Lib "kernel32" () As Long "In v kodi gumba: Dim a_hour, a_minute, a_second a = Format(GetTickCount() / 1000, "0") "total seconds a_days = Int(a / 86400) a = a - a_dni * 86400 a_hour = Int(a / 3600) a = a - a_hour * 3600 a_minute = Int(a / 60) a_second = a - a_minute * 60 MsgBox "Vaš računalnik deluje" & Str(a_days) & " dnevi " & Str(a_hour) _ & " ure " & Str(a_minute) & " minute" & Str(a_second) & " sekunde"

Ogledali smo si preproste funkcije, ki jih je mogoče uporabiti skoraj povsod. Zdaj pa poglejmo resnejše primere, ki vam lahko zelo pomagajo pri pisanju velikih projektov.

Primeri dela z mapami

Izbriši imenik

Funkcija zasebne deklaracije RemoveDirectory& Lib _ "kernel32" Vzdevek ​​"RemoveDirectoryA" (ByVal lpPathName kot niz) "Odstranjevanje imenika (prazno!) PathName$ = "D:\t" koda& = RemoveDirectory(PathName) Če je koda& = 0 Potem "Napaka odstranjevanje imenika Else "Imenik izbrisan End If

Ustvari imenik

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)<>":" In Dir$(path, vbDirectory) = "" Potem pot MkDir End If Loop Until i >= Len(dirname) End Sub Private Sub Command1_Click() Call MakeDir("C:\Soft\1\2\3\ ") End Sub

Seznam vseh map s podmapami

Obrazcu dodamo 2 besedilni polji in gumb, ime prvega besedilnega polja je StartText, ime drugega besedilnega polja je OutText. Večvrstična lastnost = true, ime gumba = CmdStart

Statično izvajanje 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 If running Then running = False CmdStart.Enabled = False CmdStart.Caption = "Stopping" Else running = True MousePointer = vbHourglass CmdStart.Caption = "Stop" 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 <>"" Če UCase$(sub_dir)<>"PAGEFILE.SYS" In sub_dir<>"." In sub_dir<>".." Then sub_dir = dir_name & "\" & sub_dir On Error Resume Next If GetAttr(sub_dir) And vbDirectory Then AllDirs.Add sub_dir End If sub_dir = Dir$(, vbDirectory) Loop DoEvents If Not running Then Exit 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

Zdaj zaženemo program, v besedilno polje StartText vpišemo: C:\windows in kliknemo na gumb.

Velikost imenika

Const MAX_PATH = 260 Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Private Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14 Končna vrsta zasebne deklaracijske funkcije FindFirstFile Lib _ "kernel32" vzdevek "FindFirstFileA" (ByVal lpFileName kot niz, lpFindFileData kot WIN32_FIND_DATA) kot dolga zasebna deklarirana funkcija FindNextFile Lib _ "kernel32" vzdevek "FindNextFileA" (ByVal hFindFile As Long, lpFind FileData 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: Exit Function If (x And vbDirectory) = vbDirectory Then dblSize = 0 Err.Clear sName = Dir$(EndSlash(DirPath) & "*.* ", vbSystem Ali vbHidden Ali vbDirectory) Če je Err.Number = 0 Then hFind = FindFirstFile(EndSlash(DirPath) & "*.*", fdata) If hFind = 0 Then Exit Function Do If (fdata.dwFileAttributes In vbDirectory) = vbDirectory Potem sName = Left$(fdata.cFileName, InStr(fdata.cFileName, vbNullChar) - 1) Če sName<>"." In ime<>".." Nato 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 Private Function EndSlash(ByVal PathIn As String) As String If Right$(PathIn, 1) = "\" Nato EndSlash = PathIn Else EndSlash = PathIn & "\" End If End Function Private Sub Form_Load() "Zamenjajte "D:\soft" z imenikom, katerega velikost želite vedeti MsgBox SizeOf("D:\soft") / 1000000 End Sub

Primeri dela z datotekami

Kopirati

Recimo, da imamo datoteko z imenom 1.txt v mapi C:\1\ in jo moramo kopirati v C:\2\, da to storimo, napišemo to kodo:

Kopija datoteke "C:\1\1.txt", "C:\2\1.txt"

Opomba! Če imenik 2 že vsebuje datoteko z imenom 1.txt, bo nadomeščena z 1.txt iz imenika 1.

Private Declare Function CopyFile Lib _ "kernel32.dll" Alias ​​​​"CopyFileA" _ (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long Private Sub Command1_Click() " Kopiraj datoteko C:\1.txt v D :\1.txt Dim retval As Long " vrnjena vrednost "Kopiraj datoteko retval = CopyFile("C:\1.txt", "D:\1.txt", 1) Če je retval = 0 Potem "Če napaka MsgBox " Ni mogoče kopirati" Else "Če je vse v redu MsgBox "Datoteka kopirana." End If End Sub

Odstranitev

Na primer, želimo izbrisati datoteko 1.txt iz korena pogona C:\

Ubij ("C:\1.txt")

API metoda

Private Declare Function DeleteFile Lib _ "kernel32.dll" Alias ​​​​"DeleteFileA" (ByVal lpFileName As String) As Long Private Sub Command1_Click() "Delete file C:\Samples\anyfile.txt Dim retval As Long "Vrni vrednost retval = DeleteFile( "C:\1.txt") If retval = 1 Then MsgBox "Datoteka je bila uspešno izbrisana." End Sub

Premikanje

Lahko ga na primer premaknete takole:

Kopija datoteke "C:\1.txt", "C:\2\1.txt" Ubij ("C:\1.txt")

Ampak bolje je tako (prek API-ja):

Private Declare Function MoveFile Lib _ "kernel32.dll" Alias ​​​​"MoveFileA" _ (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long Private Sub Command1_Click() Dim retval As Long "Povrnjena vrednost retval = MoveFile("C: \1 .txt", "C:\2\1.txt") If retval = 1 Then MsgBox "Premaknjeno uspešno" Else MsgBox "Error" End If End Sub

Preimenovanje

Če želite preimenovati datoteko 1.txt v C:\ v 2.txt, lahko uporabite naslednjo kodo:

Kopija datoteke "C:\1.txt", "C:\2.txt" Ubij ("C:\1.txt")

API metoda

Private Declare Function MoveFile Lib _ "kernel32.dll" Alias ​​​​"MoveFileA" _ (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long Private Sub Command1_Click() Dim retval As Long " vrnjena vrednost retval = MoveFile("C: \1 .txt", "C:\2.txt") If retval = 1 Then MsgBox "Success" Else MsgBox "Error" End If End Sub

Določite velikost datoteke

Velikost datoteke je mogoče določiti na dva načina:

Če je datoteko mogoče odpreti s funkcijo OPEN, potem lahko uporabite funkcijo LOF

Dim FileFree As Integer Dim FileSize As Long FileFree = FreeFile Odpri "C:\WIN\GENERAL.TXT" za vnos kot FileFree FileSize = LOF(FileFree) Zapri FileFree

Ali pa uporabite funkcijo FileLen

Dim lFileSize As Long FileSize = FileLen("C:\WIN\GENERAL.TXT")

Skrij uro programsko

Dodajte 2 gumba in prilepite kodo:

Možnost Eksplicitna zasebna prijavna funkcija FindWindow Lib _ "user32" vzdevek ​​"FindWindowA" (ByVal lpClassName kot niz, ByVal lpWindowName kot niz) As Long Zasebna prijavna funkcija FindWindowEx Lib _ "user32" vzdevek ​​"FindWindowExA" _ (ByVal hWnd1 kot 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 = "Skrij uro" Command2.Caption = "Pokaži uro" End Sub

Dodaj ikono pladnja

Dodajte modul in vanj prilepite kodo:

Deklarirajte funkcijo Shell_NotifyIconA Lib _ "SHELL32" (ByVal dwMessage As Long, lpData Kot NOTIFYICONDATA) Kot celoštevilsko javno konst NIM_ADD = 0 javno konst NIM_MODIFY = 1 javno konst NIM_DELETE = 2 javno konst NIF_MESSAGE = 1 javno konst NIF_ICON = 2 javno konst NIF_TIP = 4 Type 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 Kot NOTIFYICONDATA nidTemp.cbSize = Len(nidTemp) nidTemp.hWnd = hWnd nidTemp.uID = 0& nidTemp.uFlags = NIF_ICON ali NIF_TIP nidTemp.uCallbackMessage = 0& nidTemp.hIcon = Ikona nidTemp.szTip = tip & Chr$ (0) SetTray Ikona = Shell_NotifyIconA(Mode, nidTemp) Končna funkcija

Za uporabo v obrazec vstavite kodo:

Private Sub Form_Load() SetTrayIcon NIM_ADD, Me.hWnd, Me.Icon, "Test" End Sub "Če želite izbrisati zasebni pod Command1_Click() SetTrayIcon NIM_DELETE, Me.hWnd, 0&, "" End Sub

Blokiranje gumba za zagon

Funkcija zasebne deklaracije FindWindow Lib "user32" vzdevek ​​"FindWindowA" _ (ByVal lpClassName kot niz, ByVal lpWindowName kot niz) As Long Funkcija zasebne deklaracije FindWindowEx Lib "user32" vzdevek "FindWindowExA" _ (ByVal hWnd1 kot dolgo, 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(Izbirno omogočeno kot Boolean = True) Dim lHwnd As Long " find hWnd lHwnd& = FindWindowEx(FindWindow("Shell_TrayWnd", ""), 0&, "Button", vbNullString) Pokliči EnableWindow(lHwnd&, CLng(Enabled)) End Sub Private Sub Command1_Click() EnableStartButton False "gumb ZAČNI je onemogočen End Sub Private Sub Command2_Click() EnableStartButton True "Gumb START ni onemogočen End Sub

Branje parametrov iz datoteke INI

Program se poveže na FTP, ini datoteka pa vsebuje parametre - strežnik, prijava, vrata, geslo.

Najprej ustvarite datoteko INI:

Servname=strežnik usern=Prijava pwd=geslo port=vrata

Postaviti ga je treba v programsko mapo. Nato vstavite v modul:

Funkcija zasebne deklaracije WritePrivateProfileString Lib _ "kernel32" Vzdevek "WritePrivateProfileStringA" (ByVal lpApplicationName kot niz, ByVal lpKeyName kot niz, _ ByVal lpString kot niz, ByVal lpFileName kot niz) kot dolga zasebna funkcija deklaracije GetPrivateProfileString Lib _ "ker nel32" Vzdevek ​​"Get PrivateProfileStringA" (ByVal lpApplicationName kot niz, ByVal lpKeyName kot niz, _ ByVal lpDefault kot niz, ByVal lpReturnedString kot niz, _ ByVal nSize kot dolg, ByVal lpFileName kot niz) kot dolg javna funkcija ReadIni(Razdel kot niz, param) As String ReadIni = GetValue (Razdel, Param, App.Path & "\test.ini", "0") Končna funkcija Zasebna funkcija GetValue(ByVal razdelek kot niz, _ ByVal ključ kot niz, ByVal fFileName kot niz, izbirno ByVal privzeta vrednost As String = vbNullString) As String Dim Data As String Data = String$(1000, Chr$(0)) If GetPrivateProfileString(Section, Key, DefaultValue, Data, 1000, fFileName) > 0 Then GetValue = Left$(Data, InStr (Data$, Chr $(0)) - 1) Else GetValue = DefaultValue End If Exit Function End Function

Nato prilepite v kodo obrazca:

Private Declare Function 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) Kot Boolean Private Declare Function FtpGetFile Lib _ "wininet.dll" Alias ​​​​"FtpGetFileA" (ByVal hFtpSession As Long, ByVal lpszRemoteFile kot niz, _ ByVal lpszNewFile kot niz, ByVal fFailIfExists kot Boolean, ByVal dwFlagsAndAt pokloni As Long, _ ByVal dwFlags As Long, ByVal dwContext As Long ) As Boolean Private Declare Function InternetCloseHandle Lib _ "wininet.dll" (ByVal hInet As Long) As Integer Dim rc& Dim rs&

In v kodi gumba:

rc& = InternetOpen("", 0, vbNullString, vbNullString, 0) rs& = InternetConnect(rc&, ReadIni("Splošno", "servname"), "0", _ ReadIni("Splošno", "usern"), ReadIni( "General", "pwd"), 1, 0, 0) If FtpGetFile(rs&, "Your file.txt", "path where", False, 0, 1, 0) = False Then End Call InternetCloseHandle(rs&) Call InternetCloseHandle(rc&)

Seznam tekočih procesov

Dodajte polje s seznamom in 1 gumb, vstavite naslednjo kodo:

Možnost Eksplicitna zasebna najava funkcije CreateToolhelpSnapshot Lib _ "Kernel32" vzdevek "CreateToolhelp32Snapshot" _ (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Private Declare Function ProcessFirst Lib _ "Kernel32" vzdevek "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 ) Private Const TH32CS_SNAPPROCESS As Long = 2& Private Const MAX_PATH As Integer = 260 Private Type 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 szExeFile As String * MAX_PATH End Type Dim hSnapShot As Long Dim uProcess As PROCESSENTRY32 Dim r As Long Private Sub Command1_Click() List1.Clear hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) If hSnapShot = 0 Then Exit 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

Postavitev programa v zagon

Če želite, da se program naloži z Windows, kot nekateri drugi programi, lahko uporabite register:

Dodajte 2 gumba in to kodo:

Private Sub Command1_Click() "Vnos v register Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\Name of your program", _ "Path to your program" End Sub Private Sub Command2_Click() "Izbriši iz registra Set Reg = CreateObject("WScript.Shell") Reg.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\Name of your program" End Sub

In da se program naloži skupaj z Windows, tudi v varnem načinu, potem naslednja koda:

Prvič, resnejša metoda (za vsak slučaj naredite varnostno kopijo registra).

Private Sub Command1_Click() Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell", _ "Pot do vašega programa" End Sub Private Sub Command2_Click()" To je za obnovitev Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell", _ "Explorer.exe," End Sub

No, preprost način.

Private Sub Command1_Click() Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit", _ "C:\\WINDOWS\\system32\\userinit.exe ,Pot do vašega programa" End Sub Private Sub Command2_Click()"Za obnovitev Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit", _ "C: \\WINDOWS\\system32\\userinit.exe," End Sub

Skrivanje opravilne vrstice

Dodajte 2 gumba in prilepite kodo:

Funkcija zasebne deklaracije 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 Funkcija FindWindow Lib "user32" Alias ​​​​"FindWindowA" _ (ByVal lpClassName kot niz, ByVal lpWindowName kot niz) As Long Const SWP_HIDEWINDOW = &H80 Const SWP_SHOWWINDOW = &H40 "Skrij zasebni podukaz1_Click() hwnd1 = FindWindow("Shell_tra) ywnd", " ") Pokličite SetWindowPos(hwnd1, 0, 0, 0, 0, 0, SWP_HIDEWINDOW) End Sub "Prikaže zasebni podukaz2_Click() hwnd1 = FindWindow("Shell_traywnd", "") Pokličite SetWindowPos(hwnd1, 0, 0, 0, 0, 0, SWP_SHOWWINDOW) End Sub

Razpakirajte arhiv RAR

Če želite razpakirati arhiv RAR, lahko uporabite naslednjo kodo:

WinRarApp = "C:\Programske datoteke\WinRAR\WinRAR.exe x -o+" iPath = "C:\" iArhivName = "Ime datoteke.rar" adr = WinRarApp & " """ & iPath & iArhivName & """ " "" & iPath & """ " RetVal = Shell(adr, vbHide)

Koliko RAM-a je v računalniku

Dodajte en gumb in prilepite naslednjo kodo:

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 ms As TMemoryStatus Zasebni podukaz1_klik( ) ms.dwLength = Len(ms) Call GlobalMemoryStatus(ms) MsgBox "Total:" & ms.dwTotalPhys & vbCr & "Free:" _ & ms.dwAvailPhys & vbCr & "Used in %:" & ms.dwMemoryLoad End Sub

Skrij ikone na namizju

To se naredi na naslednji način. Dodajte 2 gumba in prilepite naslednjo kodo:

Funkcija zasebne deklaracije ShowWindow& Lib "user32" (ByVal hwnd&, ByVal nCmdShow&) Funkcija zasebne deklaracije FindWindow Lib _ "user32" Alias ​​​​"FindWindowA" (ByVal lpClassName kot niz, ByVal lpWindowName kot niz) As Long Const SW_HIDE = 0 Const SW _NORMALNO = 1 Private Sub Command1_Click() Dim hHandle As Long hHandle = FindWindow("progman", vbNullString) Call ShowWindow(hHandle, SW_HIDE) End Sub Private Sub Command2_Click() Dim hHandle As Long hHandle = FindWindow("progman", vbNullString) Call ShowWindow (hHandle, SW_NORMAL) End Sub

Z uporabo gumba Command1 so ikone skrite, Command2 - se prikažejo.

To je zame vse, upam, da vam bodo zgornji primeri koristili, adijo!

Uporaba funkcije Split v VBA Excelu, njena sintaksa in parametri. Vrednosti, ki jih vrne funkcija Split. Primeri uporabe.

Funkcija Split je zasnovana v VBA Excelu za razdelitev niza na podnize z uporabo posebnih ločilnih oznak. Ločilo je lahko en znak ali niz več znakov. Funkcija Split je inverzna funkcija, ki ustvari en niz iz niza podnizov.

Sintaksa funkcije

Split (izraz,,,)

Zahtevani parameter funkcije Split je izraz - če drugi parametri niso izrecno določeni, se uporabijo njihove privzete vrednosti.

Funkcijski parametri

*Če je uporabljena binarna primerjava (0 ali CompareMethod.Binary), funkcija razlikuje med velikimi in malimi črkami. Če je uporabljena primerjava besedila (1 ali CompareMethod.Text), funkcija ne razlikuje med velikimi in malimi črkami.

Povratne vrednosti

Funkcija Split vrne enodimenzionalno matriko, indeksirano od nič, ki vsebuje podani parameter Omejitevštevilo podnizov. Najpogosteje se funkcija Split uporablja z vrednostjo parametra Omejitev privzeto enako -1, ko so vrnjeni vsi podnizi, najdeni v izvornem nizu.

Primer 1

Sub Test1() Dim a() As String a = Split("vremya ne zhdet") MsgBox a(0) & vbNewLine & a(1) & vbNewLine & a(2) End Sub Result in MsgBox: čas ne zhdet

Prvi primer uporablja Ločilo in Omejitev privzeto.

Primer 2

Sub Test2() Dim a() As String a = Split("vremya-ne-zhdet","-", 2) MsgBox a(0) & vbNewLine & a(1) End Sub Result in MsgBox: čas ne-zhdet

V drugem primeru Ločilo= "-", a Omejitev = 2.

Funkcija Split dodeli rezultate z vnaprej določenim besedilom, ki se lahko uporabi v vrstici za dodelitev s praznimi oklepaji ali brez njih. V zgornjih primerih je polje podano brez oklepajev.

Kode iz podanih primerov lahko kopirate v modul VBA vašega Excelovega delovnega zvezka in si ogledate, kako delujejo. Eksperimentirajte z zamenjavo lastnih podatkov, da dobite praktičen občutek za funkcijo Split.

To poglavje predstavlja osnovni "arzenal" VB.NET. Večino gradiva sestavlja kratek pregled konceptov, ki so skupni vsem programskim jezikom (kot so spremenljivke in navodila za zanko) ter opis osnovnih tipov podatkov, predvsem različnih števil in nizov. Bralci, ki poznajo VB6, bodo morda želeli preleteti to poglavje.

Samo nekaj primerov v tem poglavju vsebuje dejansko kodo, ki jo je mogoče uporabiti v resnih programih VB.NET. Dejstvo je, da noben resen program VB.NET ne more brez na predlogah temelječih objektov, imenovanih razredi, o čemer bomo razpravljali v 4. poglavju. Začeli bomo z osnovnimi konstrukti jezika, saj bi se sicer morali omejiti na primitivni razredi, ki nimajo praktične vrednosti. To poglavje ne zajema uporabniško definiranih razredov in prikazuje samo osnovne primere uporabe vgrajenih razredov .NET Framework, ki so izjemno zmogljivi.

Kaj iz tega sledi? Nenavadno je, da so programi, napisani v tem poglavju, po slogu zelo podobni tradicionalnemu programiranju zgodnjega obdobja BASIC in celo obdobja Fortran in COBOL, ki sta bila pred njim (razen nekaterih čudnih, a potrebnih sintaktičnih konstruktov). Zlasti imajo za razliko od programov v kasnejših poglavjih vedno jasno določen začetek in konec, nadzor pa se prenaša od začetka do konca (čeprav se nadzor lahko prenaša s posebnimi ukazi).

Kot je navedeno v uvodu, bomo poskušali predstaviti programe, napisane v običajnem slogu .NET, pri čemer se bomo izogibali umetni združljivosti z VB6, kadar koli bo to mogoče.

Vsaka aplikacija VB.NET mora imeti vstopno točko. Vstopna točka vsebuje kodo, ki se samodejno izvede ob zagonu, nato pa se nadzor prenese na ostalo programsko kodo. V razmeroma preprostih grafičnih aplikacijah je lahko vstopna točka povezana z začetnim obrazcem, kot v VB6. Toda kot smo videli v 1. poglavju, je koda Windows Forms precej zapletena in iskanje vstopne točke je lahko izziv. To poglavje zajema samo aplikacije konzole, ki se izvajajo v oknu konzole (kot je okno seje DOS). Da, VB.NET olajša ustvarjanje tradicionalnih konzolnih aplikacij, ki se pogosto uporabljajo pri programiranju skriptov na strani strežnika.

Vstopna točka konzolne aplikacije je postopek Podglavni modul (analogno postopku Podglavni v VB6). Če izberete ikono konzolne aplikacije ( Konzolna aplikacija), VB.NET samodejno ustvari "skeleton" aplikacijo z vstopno točko - proceduro Podglavni:

Modul Module1 Sub Main() End Sub End Module

Za razliko od VB6 prva vrstica podaja ime modula (ukaz je v krepkem tisku). Ta primer uporablja privzeto ime Modul el. V skladu s pravili se mora ime modula ujemati z imenom datoteke. Recimo, da ste spremenili ime modula v prvi vrstici: Module Test1. Ko poskušate zagnati konzolno aplikacijo, prejmete sporočilo o napaki:

Zagonska koda "Sub Main" je bila podana v "Test.Modulel". vendar "Test.Modulel" ni bil najden

Preimenovanje modula, potem ko je bil ustvarjen, se izvede na naslednji način:

  1. Spremenite ime modula v oknu programa.
  2. Spremenite ime datoteke modula v oknu rešitve.
  3. Desni klik na črto Konzolna aplikacija okno rešitve in v kontekstnem meniju izberite ukaz Lastnosti.
  4. Prepričajte se, da je naveden Zagonski objekt V pogovornem oknu, ki se prikaže (slika 3.1), je izbrano ime modula.

Po analogiji z VB6 je lahko program (rešitev) VB.NET sestavljen iz več modulov, vendar prisotnost postopka Podglavni dovoljeno samo v enem modulu. Aplikacija se zaključi, ko doseže ukaz End Sub postopkov Podglavni. Na primer, legendarni program "Hello world" izgleda takole:

Modul Modul el Sub Main() Console.WriteLine("Hello world") End Sub End Module

Če zaženete ta program v IDE, bo okno DOS z besedami "Hello world" zelo hitro utripalo na zaslonu (in takoj izginilo). Okno se zapre, ko je ukaz obdelan End Sub.

Funkcija vrne enodimenzionalno matriko, ki vsebuje določeno število podnizov. Ta funkcija je obratna funkcija Join.

Sintaksa

Razdeli( Izraz[, Ločilo[, Meja[, Primerjava]])

Opcije

Izraz- izraz tipa String, ki vsebuje podnize z ločili.
Ločilo- izraz tipa Variant (String), ki definira znak, ki se uporablja kot ločilo. Če je argument izpuščen, se uporabi presledek (" ").
Omejitev- Dolgi izraz, ki označuje število elementov, ki jih je treba vrniti. privzeta vrednost je -1 (vrni vse elemente).
Primerjaj- številčni parameter, ki označuje primerjalno metodo.

Parameter Primerjaj lahko sprejme naslednje vrednosti:

Povratne vrednosti

Vrne enodimenzionalno matriko tipa Variant (String).
Če ima parameter izraza dolžino nič, funkcija vrne prazno matriko. Če ima parameter Delimiter dolžino nič, bo funkcija vrnila matriko z enim izraznim elementom.

Primer uporabe

Private Sub Form_Load() Dim arrMyArray() As String Dim strMyString As String strMyString = "Pozdravljeni! Kako ste?" arrMyArray = Split(strMyString) "vrne "Hello!" Debug.Print arrMyArray(0) End Sub

Poglej tudi: niz,