Minh họa hướng dẫn về Visual Basic.NET. Ngôn ngữ Visual Basic - ví dụ viết mã chương trình ví dụ Vb6

Hàm trả về một mảng một chiều chứa số chuỗi con được chỉ định. Hàm này là hàm nghịch đảo của hàm Join.

Cú pháp

Tách ra( Biểu thức[, Dấu phân cách[, Giới hạn[, So sánh]])

Tùy chọn

Sự biểu lộ- một biểu thức kiểu Chuỗi chứa các chuỗi con có dấu phân cách.
Dấu phân cách- một biểu thức thuộc loại Biến thể (Chuỗi) xác định ký tự được sử dụng làm dấu phân cách. Nếu đối số bị bỏ qua, ký tự khoảng trắng ("") sẽ được sử dụng.
Giới hạn- một biểu thức dài cho biết số phần tử cần trả về. mặc định là -1 (trả về tất cả các phần tử).
So sánh- một tham số bằng số chỉ ra phương pháp so sánh.

Tham số So sánh có thể nhận các giá trị sau:

Giá trị trả về

Trả về mảng một chiều có kiểu Variant (Chuỗi).
Nếu tham số Biểu thức có độ dài bằng 0, hàm sẽ trả về một mảng trống. Nếu tham số Dấu phân cách có độ dài bằng 0, hàm sẽ trả về một mảng có một phần tử Biểu thức.

Ví dụ sử dụng

Private Sub Form_Load() Dim arrMyArray() As String Dim strMyString As String strMyString = "Xin chào! Bạn khỏe không?" arrMyArray = Split(strMyString) "trả về "Xin chào!" Debug.Print arrMyArray(0) End Sub

Xem thêm: Mảng,
Chào mọi người!
Hôm nay tôi muốn nói về mật mã. Tôi đã làm một ví dụ về việc sử dụng mật mã đặc biệt - steganography. Phương pháp này che giấu sự thật về mã hóa dữ liệu. Có rất nhiều loại steganography. Tôi muốn nói về phương pháp LBS, phương pháp này ẩn dữ liệu ở các bit cấp thấp của dữ liệu âm thanh. Có vẻ như người dùng đang trao đổi tệp âm thanh nhưng thực tế họ đang trao đổi dữ liệu nhạy cảm. Bất cứ ai không biết về phương pháp này thậm chí sẽ không nghi ngờ việc trao đổi dữ liệu bí mật. Trong một số trường hợp điều này có thể rất hữu ích.
Làm thế nào nó hoạt động?
Tệp WAVE-PCM (không nén) chứa dữ liệu âm thanh. Trên thực tế, âm thanh là một sự kiện tương tự, tức là tiếp diễn. Để chuyển nó sang dạng kỹ thuật số, bạn cần lượng tử hóa nó với một số tổn thất. Quá trình này được đặc trưng bởi hai tham số: độ sâu bit và tần số lấy mẫu. Độ sâu bit ảnh hưởng đến số lượng tín hiệu có thể chứa trong mỗi mẫu. Tốc độ lấy mẫu ảnh hưởng đến tần số tối đa mà dữ liệu âm thanh có thể chứa:

Trong trường hợp của chúng tôi, chúng tôi chỉ quan tâm đến độ sâu bit của dữ liệu âm thanh. Nó có thể là 32, 24, 16, ... bit cho mỗi mẫu. Ý tưởng chính của steganography (trong trường hợp của chúng tôi) là viết lại các bit dữ liệu âm thanh bậc thấp. Chúng ta sử dụng càng nhiều bit thì độ biến dạng sẽ càng mạnh.
Trực quan:


Như có thể thấy trong hình, phương thức này lưu trữ tất cả dữ liệu được mã hóa trong một số bit dữ liệu âm thanh nhất định (trong trường hợp này là 4 bit cho mỗi mẫu). Cũng lưu ý rằng để lưu dữ liệu bạn cần sử dụng tệp âm thanh có kích thước lớn hơn tệp được mã hóa. Ví dụ: nếu chúng ta sử dụng 3 bit để mã hóa, tệp âm thanh sẽ cần lớn hơn ít nhất 16/3 lần so với tệp đang được mã hóa. Tôi nói 16 vì tôi đang sử dụng 16 bit cho mỗi mẫu trong ví dụ của mình.
Trong ví dụ đính kèm tôi cũng giữ nguyên tên file gốc. Định dạng dữ liệu rõ ràng:


Khi quá trình đóng gói xảy ra, mỗi byte sẽ được lấy từ tệp được mã hóa. Sau đó, các bit cần thiết được trích xuất từ ​​byte tiếp theo và các bit tương ứng trong dữ liệu âm thanh cũng bị xóa. Các bit này sau đó được thiết lập bằng cách sử dụng phép toán OR theo bit. Mặt nạ và dịch chuyển được sử dụng để trích xuất các bit cần thiết. Mặt nạ để lại các bit cần thiết, trong khi các ca thay đổi đặt chúng ở đầu byte.
Việc giải nén xảy ra hoàn toàn ngược lại. Các bit được trích xuất từ ​​tệp âm thanh và tệp gốc được tập hợp lại. Phổ của tệp âm thanh tùy thuộc vào độ sâu bit:

Tôi hy vọng đánh giá ngắn này sẽ hữu ích.
Cám ơn vì sự quan tâm của bạn.

Sử dụng hàm Split trong VBA Excel, cú pháp và các tham số của nó. Các giá trị được hàm Split trả về. Ví dụ về việc sử dụng.

Hàm Split được thiết kế trong VBA Excel để chia một chuỗi thành các chuỗi con bằng cách sử dụng các dấu phân cách đặc biệt. Dấu phân cách có thể là một ký tự đơn hoặc một chuỗi gồm nhiều ký tự. Hàm Split là hàm nghịch đảo của hàm, tạo một chuỗi từ một mảng các chuỗi con.

Cú pháp hàm

Tách (Biểu thức,,,)

Tham số bắt buộc của hàm Split là Biểu thức - nếu các tham số khác không được chỉ định rõ ràng thì giá trị mặc định của chúng sẽ được sử dụng.

Thông số chức năng

*Nếu sử dụng so sánh nhị phân (0 hoặc CompareMethod.Binary), hàm sẽ phân biệt chữ hoa chữ thường. Nếu sử dụng so sánh văn bản (1 hoặc CompareMethod.Text), hàm này không phân biệt chữ hoa chữ thường.

Giá trị trả về

Hàm Split trả về mảng một chiều, được lập chỉ mục từ 0, chứa tham số đã chỉ định Giới hạn số chuỗi con. Thông thường, hàm Split được sử dụng với giá trị tham số Giới hạn theo mặc định, bằng -1, khi tất cả các chuỗi con tìm thấy trong chuỗi nguồn đều được trả về.

ví dụ 1

Sub Test1() Dim a() As String a = Split("vremya ne zhdet") MsgBox a(0) & vbNewLine & a(1) & vbNewLine & a(2) Kết quả phụ cuối cùng trong MsgBox: thời gian ne zhdet

Ví dụ đầu tiên sử dụng Dấu phân cáchGiới hạn mặc định.

Ví dụ 2

Sub Test2() Dim a() As String a = Split("vremya-ne-zhdet","-", 2) MsgBox a(0) & vbNewLine & a(1) Kết quả phụ cuối cùng trong MsgBox: thời gian ne-zhdet

Trong ví dụ thứ hai Dấu phân cách= "-", một Giới hạn = 2.

Hàm Split gán kết quả bằng cách sử dụng văn bản được khai báo trước, có thể được sử dụng trong dòng gán có hoặc không có dấu ngoặc đơn trống. Trong các ví dụ trên, mảng được chỉ định không có dấu ngoặc đơn.

Bạn có thể sao chép mã từ các ví dụ đã cho vào mô-đun VBA của sổ làm việc Excel và xem chúng hoạt động như thế nào. Hãy thử nghiệm việc thay thế dữ liệu của riêng bạn để có cảm nhận thực tế về tính năng Tách.

Xin chào mọi người, trong bài viết này tôi muốn giới thiệu cho các bạn những đoạn mã hữu ích dành cho các chương trình nhỏ. Bạn có thể sử dụng tính năng này để viết các chương trình nghiêm túc hơn của riêng mình hoặc bạn đang tìm kiếm chính xác các chức năng được mô tả ở đây.

Tất cả các mã đã được sử dụng trong môi trường lập trình Microsoft Visual Basic v6.0.

Thoát với xác nhận

Loại chương trình hoặc chức năng đầu tiên là thoát ra với thông báo xác nhận thoát ra. Nói chung, hãy mở môi trường lập trình Visual Basic, tạo một dự án tiêu chuẩn, sau đó đặt một nút trên biểu mẫu, nhấp vào nút đó và cửa sổ chỉnh sửa mã sẽ mở ra và bạn cần chèn đoạn mã sau vào đó:

Beep Dim message As String Dim Buttonsandicons As Integer Dim title As String Dim reply As String message = "Bạn có muốn đi chơi không?" tiêu đề = "Thoát" buttonasicons = vbYesNo + vbQuestion response = MsgBox(message, buttonasicons, title) If response = vbYes Then End End If !}

Mật khẩu để bắt đầu chương trình

Dim mật khẩu, Pword PassWord = "12345" Pword = inputBox("Nhập mật khẩu") Nếu Pword<>Mật khẩu Then MsgBox "Mật khẩu sai" End End If

Trong đó, 12345 là mật khẩu để khởi động chương trình. Nhưng mã này có thể được sử dụng bất cứ nơi nào bạn muốn.

Đầu ra tin nhắn

Nếu bạn chỉ muốn hiển thị một thông báo cho một cái gì đó, hãy dán thông báo này:

Tiếng bíp làm mờ tin nhắn dưới dạng chuỗi nút và biểu tượng làm mờ dưới dạng số nguyên tiêu đề làm mờ dưới dạng chuỗi tin nhắn = "Message" title = "Message" buttonasicons = vbOKOnly + vbexciamation MsgBox message, buttonsandicons, title !}

Vẽ trên mẫu

Biểu mẫu con riêng_MouseDown(Nút dưới dạng số nguyên, Shift dưới dạng số nguyên, X dưới dạng số nguyên, Y dưới dạng đơn) Form1. CurrentX = X Form1. CurrentY = Y End Sub Biểu mẫu con riêng tư_MouseMove(Nút dưới dạng số nguyên, Shift dưới dạng số nguyên, X dưới dạng đơn, Y dưới dạng Đơn) Nếu Nút = 1 Thì Dòng (Form1. CurrentX, Form1. CurrentY)-(X, Y), QBColor(0) End If End Sub

Bạn có thể thay đổi màu bằng tham số QBColor(0), tức là Thay vì 0, hãy đặt một số khác.

Khởi động lại máy tính

Để khởi động lại máy tính của bạn: đặt nút và dán đoạn mã sau:

Dim strComputer Dưới dạng Chuỗi strComputer = "." Đặt objWMIService = GetObject("winmgmts:" & "(impersonationLevel=impersonate, (Shutdown))!\\" _ & strComputer & "\root\cimv2") Đặt colOperatingSystems = objWMIService.ExecQuery("Chọn * từ Win32_OperatingSystem") cho Mỗi ObjOperatingSystem Trong colOperatingSystems ObjOperatingSystem.Reboot " Để khởi động lại Tiếp theo

Khởi chạy một chương trình trong một bản sao duy nhất

Ví dụ sau sẽ giúp bạn làm cho chương trình chỉ chạy một lần, tức là. nếu nó được khởi động lại, nó sẽ hiển thị một thông báo tương ứng. Chèn phần sau vào mã biểu mẫu:

Private Sub Form_Load() Nếu App.PrevInstance = True Thì MsgBox "Dự án đã bắt đầu!" Kết thúc Kết thúc nếu

Tắt máy tính

Để tắt máy tính, bạn có thể sử dụng đoạn mã sau:

Dim strComputer Dưới dạng Chuỗi strComputer = "." Đặt objWMIService = GetObject("winmgmts:" & "(impersonationLevel=impersonate,(Shutdown))!\\" _ & strComputer & "\root\cimv2") Đặt colOperatingSystems = objWMIService.ExecQuery("Chọn * từ Win32_OperatingSystem") cho Mỗi ObjOperatingSystem Trong colOperatingSystems ObjOperatingSystem.ShutDown "Để tắt tiếp theo

Kết thúc bất kỳ quá trình nào

Để chấm dứt quá trình, bạn có thể sử dụng đoạn mã sau:

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

Ở đâu, thay vì ICQlite.exe có thể có bất kỳ quy trình nào.

Máy tính có tuổi thọ bao lâu?

Dưới đây là một ví dụ về cách bạn có thể xác định thời gian hoạt động của máy tính. Phương pháp này dựa trên việc sử dụng thư viện kernel32, vì vậy ngay từ đầu mã biểu mẫu, hãy kết nối tệp DLL này.

Hàm khai báo riêng GetTickCount Lib "kernel32" () As Long "Và trong mã nút: Dim a_hour, a_phút, a_second a = Format(GetTickCount() / 1000, "0") "tổng số giây a_days = Int(a / 86400) a = a - a_days * 86400 a_hour = Int(a / 3600) a = a - a_hour * 3600 a_phút = Int(a / 60) a_second = a - a_phút * 60 MsgBox "Máy tính của bạn đang chạy " & Str(a_days) & " ngày " & Str(a_hour) _ & " giờ " & Str(a_phút) & " phút" & Str(a_second) & " giây"

Chúng tôi đã xem xét các hàm đơn giản có thể được sử dụng ở hầu hết mọi nơi. Bây giờ chúng ta hãy xem xét các ví dụ nghiêm túc hơn và chúng có thể giúp bạn rất nhiều trong việc viết các dự án lớn của mình.

Ví dụ về làm việc với các thư mục

Xóa thư mục

Hàm khai báo riêng RemoveDirectory& Lib _ "kernel32" Bí danh "RemoveDirectoryA" (ByVal lpPathName As String) "Xóa thư mục (trống!) PathName$ = "D:\t" code& = RemoveDirectory(PathName) If code& = 0 Then "Error xóa thư mục Khác "Thư mục đã bị xóa Kết thúc Nếu

Tạo thư mục

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)<>=> Và Dir$(path, vbDirectory) = "" Sau đó, MkDir path End If Loop Until i >= Len(dirname) End Sub Private Sub Command1_Click() Gọi MakeDir("C:\Soft\1\2\3\ ") Kết thúc phụ

Liệt kê tất cả các thư mục có thư mục con

Chúng ta thêm 2 trường văn bản và một nút vào biểu mẫu, tên trường văn bản đầu tiên là StartText, tên trường văn bản thứ hai là OutText. Thuộc tính nhiều dòng = true, tên nút = CmdStart

Chạy tĩnh Như Boolean Dim AllDirs Dưới dạng Bộ sưu tập mới Dim next_dir Dưới dạng Số nguyên Dim dir_name Dưới dạng Chuỗi Dim sub_dir Dưới dạng Chuỗi Dim i Dưới dạng Số nguyên Dim txt Dưới dạng Chuỗi Nếu chạy Sau đó chạy = Sai CmdStart.Enabled = Sai CmdStart.Caption = "Dừng" Khác đang chạy = 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 <>"" Nếu UCase$(sub_dir)<>"PAGEFILE.SYS" Và sub_dir<>"." Và sub_dir<>".." Sau đó sub_dir = dir_name & "\" & sub_dir Khi xảy ra lỗi Tiếp tục tiếp theo Nếu GetAttr(sub_dir) Và vbDirectory Then AllDirs.Add sub_dir End Nếu sub_dir = Dir$(, vbDirectory) Lặp lại DoEvents Nếu không chạy Sau đó Thoát Thực hiện Vòng lặp txt = "" For i = 1 To AllDirs.Count txt = txt & AllDirs(i) & vbCrLf Next i OutText.Text = txt MousePointer = vbDefault unning = Kết thúc sai nếu

Bây giờ chúng ta khởi chạy chương trình, viết vào trường văn bản StartText: C:\windows và nhấp vào nút.

Kích thước thư mục

Const MAX_PATH = 260 Loại riêng tư FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Private WIN32_FIND_DATA dwFileAttribut As Long ftCreationTime as FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 Long cFileName As String * MAX_PATH cAlternate As String * 14 End Type Hàm khai báo riêng FindFirstFile Lib _ "kernel32" Bí danh "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Private Delare Function FindNextFile Lib _ "kernel32" Bí danh "FindNextFileA" (ByVal hFindFile As Dữ liệu dài, lpFindFile dưới dạng WIN32_FIND_DATA) Khi dài Hàm khai báo riêng 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 Tiếp tục tiếp theo x = GetAttr(DirPath) If Err Then SizeOf = 0: Thoát hàm If (x Và vbDirectory) = vbDirectory Then dblSize = 0 Err.Clear sName = Dir$(EndSlash(DirPath) & "*.* ", vbSystem Hoặc vbHidden Hoặc vbDirectory) Nếu Err.Number = 0 Thì hFind = FindFirstFile(EndSlash(DirPath) & "*.*", fdata) Nếu hFind = 0 Thì Thoát Hàm Do If (fdata.dwFileAttribution Và vbDirectory) = vbDirectory Then sName = Left$(fdata.cFileName, InStr(fdata.cFileName, vbNullChar) - 1) If sName<>"." Và tên<>".." Sau đó dblSize = dblSize + SizeOf(EndSlash(DirPath) & sName) End If Else dblSize = dblSize + fdata.nFileSizeHigh * 65536 + fdata.nFileSizeLow End Nếu DoEvents lặp trong khi FindNextFile(hFind, fdata)<>0 hFind = FindClose(hFind) End If Else On Error Tiếp tục tiếp theo dblSize = FileLen(DirPath) End If SizeOf = dblSize End Function Chức năng riêng EndSlash(ByVal PathIn As String) As String If Right$(PathIn, 1) = "\" Sau đó EndSlash = PathIn Else EndSlash = PathIn & "\" End If End Function Private Sub Form_Load() "Thay thế "D:\soft" bằng thư mục có kích thước bạn muốn biết MsgBox SizeOf("D:\soft") / 1000000 Kết thúc phụ

Ví dụ về làm việc với tập tin

Sao chép

Giả sử chúng ta có một tệp có tên 1.txt trong thư mục C:\1\ và chúng ta cần sao chép nó vào C:\2\ để thực hiện việc này, chúng ta viết đoạn mã sau:

Bản sao tập tin "C:\1\1.txt","C:\2\1.txt"

Ghi chú! Nếu thư mục 2 đã chứa tệp có tên 1.txt thì tệp này sẽ được thay thế bằng 1.txt từ thư mục 1.

Hàm khai báo riêng CopyFile Lib _ "kernel32.dll" Bí danh "CopyFileA" _ (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) Long Private Sub Command1_Click() " Sao chép file C:\1.txt tới D :\1.txt. Dim retval As Long " giá trị trả về "Sao chép tệp retval = CopyFile("C:\1.txt", "D:\1.txt", 1) Nếu retval = 0 Then "If lỗi MsgBox " Không thể sao chép" Khác "Nếu mọi thứ đều ổn MsgBox "Đã sao chép tệp." End If End Sub

Gỡ bỏ

Ví dụ: chúng tôi muốn xóa tệp 1.txt khỏi thư mục gốc của ổ C:\

Giết ("C:\1.txt")

phương pháp API

Hàm khai báo riêng tư DeleteFile Lib _ "kernel32.dll" Bí danh "DeleteFileA" (ByVal lpFileName As String) As Long Private Sub Command1_Click() "Delete file C:\Samples\anyfile.txt Dim retval As Long "Giá trị trả về retval = DeleteFile( "C:\1.txt") Nếu retval = 1 thì MsgBox "Tệp đã được xóa thành công." Kết thúc phụ

Di chuyển

Ví dụ: bạn có thể di chuyển nó như thế này:

Bản sao tập tin "C:\1.txt","C:\2\1.txt" Kill ("C:\1.txt")

Nhưng nó tốt hơn như thế này (thông qua API):

Hàm khai báo riêng MoveFile Lib _ "kernel32.dll" Bí danh "MoveFileA" _ (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long Private Sub Command1_Click() Dim retval As Long "Return value retval = MoveFile("C: \1 .txt", "C:\2\1.txt") Nếu retval = 1 Then MsgBox "Đã di chuyển thành công" Ngược lại MsgBox "Lỗi" End If End Sub

Đổi tên

Để đổi tên tệp 1.txt nằm trong C:\ thành 2.txt, bạn có thể sử dụng đoạn mã sau:

Bản sao tập tin "C:\1.txt","C:\2.txt" Kill ("C:\1.txt")

phương pháp API

Hàm khai báo riêng MoveFile Lib _ "kernel32.dll" Bí danh "MoveFileA" _ (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long Private Sub Command1_Click() Dim retval As Long " trả về giá trị retval = MoveFile("C: \1 .txt", "C:\2.txt") Nếu retval = 1 Then MsgBox "Success" Ngược lại MsgBox "Error" End If End Sub

Xác định kích thước tập tin

Kích thước tập tin có thể được xác định theo hai cách:

Nếu tệp có thể mở được bằng hàm OPEN thì bạn có thể sử dụng hàm LOF

Dim FileFree As Integer Dim FileSize As Long FileFree = FreeFile Mở "C:\WIN\GENERAL.TXT" cho đầu vào dưới dạng FileFree FileSize = LOF(FileFree) Đóng FileFree

Hoặc sử dụng chức năng FileLen

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

Ẩn đồng hồ theo chương trình

Thêm 2 nút và dán mã:

Tùy chọn Rõ ràng Hàm khai báo riêng FindWindow Lib _ "user32" Bí danh "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function FindWindowEx Lib _ "user32" Bí danh "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 = "Ẩn đồng hồ" Command2.Caption = "Hiển thị đồng hồ" End Sub

Thêm biểu tượng khay

Thêm một mô-đun và dán mã vào nó:

Khai báo hàm Shell_NotifyIconA Lib _ "SHELL32" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) Dưới dạng số nguyên Const công khai NIM_ADD = 0 Const công khai NIM_MODIFY = 1 Const công khai NIM_DELETE = 2 Const công khai NIF_MESSAGE = 1 Const công khai NIF_ICON = 2 Const công khai NIF_TIP = 4 Gõ 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 Như NOTIFYICONDATA nidTemp.cbSize = Len(nidTemp) nidTemp.hWnd = hWnd nidTemp.uID = 0& nidTemp.uFlags = NIF_ICON Hoặc NIF_TIP nidTemp.uCallbackMessage = 0& nidTemp.hIcon = Biểu tượng nidTemp.szTip = tip & Chr$(0 ) SetTrayIcon = Shell_NotifyIconA(Chế độ, nidTemp) Chức năng kết thúc

Để sử dụng, chèn vào mã mẫu:

Private Sub Form_Load() SetTrayIcon NIM_ADD, Me.hWnd, Me.Icon, "Test" End Sub "Để xóa một Private Sub Command1_Click() SetTrayIcon NIM_DELETE, Me.hWnd, 0&, "" End Sub

Chặn nút bắt đầu

Hàm khai báo riêng FindWindow Lib "user32" Bí danh "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Khai báo riêng Hàm FindWindowEx Lib "user32" Bí danh "FindWindowExA" _ (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Delare Function EnableWindow Lib "user32" _ (ByVal hwnd As Long, ByVal fEnable As Long) As Long Public Sub EnableStartButton(Bật tùy chọn là Boolean = True) Dim lHwnd As Long " find hWnd lHwnd& = FindWindowEx(FindWindow("Shell_TrayWnd", ""), 0&, "Button", vbNullString) Gọi EnableWindow(lHwnd&, CLng(Enabled)) End Sub Lệnh phụ riêng tư1_Click() EnableStartButton Sai "nút BẮT ĐẦU bị vô hiệu hóa End Sub Private Sub Command2_Click() EnableStartButton True "Nút START không bị tắt End Sub

Đọc tham số từ tệp INI

Chương trình kết nối với FTP và tệp ini chứa các tham số - máy chủ, thông tin đăng nhập, cổng, mật khẩu.

Đầu tiên, tạo tệp INI:

Tên dịch vụ=người dùng máy chủ=Đăng nhập pwd=mật khẩu port=port

Nó phải được đặt trong thư mục chương trình. Tiếp theo, chèn vào mô-đun:

Hàm khai báo riêng WritePrivateProfileString Lib _ "kernel32" Bí danh "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, _ ByVal lpString As String, ByVal lpFileName As String) Khi hàm khai báo riêng tư dài GetPrivateProfileString Lib _ "kernel32" Bí danh ​​"GetPriv"ateProfileStringA" (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 ) Dưới dạng Chuỗi ReadIni = GetValue (Razdel, Param, App.Path & "\test.ini", "0") Hàm kết thúc Hàm riêng GetValue(Phần ByVal dưới dạng chuỗi, _ Khóa ByVal dưới dạng chuỗi, ByVal fFileName dưới dạng chuỗi, ByVal tùy chọn DefaultValue As String = vbNullString) As String Dim Data As String Data = String$(1000, Chr$(0)) Nếu GetPrivateProfileString(Section, Key, DefaultValue, Data, 1000, fFileName) > 0 Thì GetValue = Left$(Data, InStr(Data$, Chr $(0)) - 1) Ngược lại GetValue = DefaultValue End If Exit Function End Function

Sau đó dán vào mã mẫu:

Hàm khai báo riêng InternetOpen Lib _ "wininet.dll" Bí danh "InternetOpenA" (ByVal sAgent As String, ByVal nAccessType As Long, ByVal sProxyName As String, _ ByVal sProxyBypass As String, ByVal nFlags As Long) Hàm khai báo riêng dài hạn InternetConnect Lib _ "wininet.dll" Bí danh "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 Khai báo Hàm FtpPutFile Lib _ "wininet.dll" Bí danh "FtpPutFileA" (ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _ ByVal lpszRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Dài) Hàm khai báo riêng tư Boolean FtpGetFile Lib _ "wininet.dll" Bí danh "FtpGetFileA" (ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, _ ByVal lpszNewFile As String, ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttribution As Long, _ ByVal dwFlags As Long, ByVal dw Context As Long ) As Boolean Private Delare Function InternetCloseHandle Lib _ "wininet.dll" (ByVal hInet As Long) As Integer Dim rc& Dim rs&

Và trong mã nút:

rc& = InternetOpen("", 0, vbNullString, vbNullString, 0) rs& = InternetConnect(rc&, ReadIni("General", "servname"), "0", _ ReadIni("General", "usern"), ReadIni( "General", "pwd"), 1, 0, 0) Nếu FtpGetFile(rs&, "Your file.txt", "path Where", False, 0, 1, 0) = Sai Sau đó kết thúc cuộc gọi InternetCloseHandle(rs&) Call InternetCloseHandle(rc&)

Danh sách các tiến trình đang chạy

Thêm Listbox và 1 nút, chèn đoạn mã sau:

Tùy chọn Rõ ràng Hàm khai báo riêng CreateToolhelpSnapshot Lib _ "Kernel32" Bí danh "CreatToolhelp32Snapshot" _ (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Private Khai báo hàm ProcessFirst Lib _ "Kernel32" Bí danh "Process32First" _ (ByVal hSnapShot Long, uProcess As PROCESSENTRY32) As Long Khai báo riêng Hàm ProcessNext Lib _ "Kernel32" Bí danh "Process32Next" _ (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Khai báo riêng Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long ) Const riêng 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 Long th32ParentProcessID Long pcPriClassBase Long dwFlags Long szExeFile As String * MAX_PATH Loại kết thúc Dim hSnapShot As Long Dim uProcess As PROCESSENTRY32 Dim r As Long Private Sub Command1_Click() List1.Clear hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) Nếu hSnapShot = 0 Thì Thoát Sub End Nếu uProcess.dwSize = Len(uProcess) r = ProcessFirst (hSnapShot, uProcess) Thực hiện While r List1.AddItem uProcess.szExeFile r = ProcessNext(hSnapShot, uProcess) Gọi vòng lặp CloseHandle(hSnapShot) End Sub

Đưa một chương trình vào khởi động

Để chương trình tải cùng Windows, giống như một số chương trình khác, bạn có thể sử dụng sổ đăng ký:

Thêm 2 nút và đoạn mã sau:

Private Sub Command1_Click() "Mục đăng ký Đặt Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\Tên chương trình của bạn", _ "Đường dẫn đến chương trình của bạn" End Sub Private Sub Command2_Click() "Xóa khỏi sổ đăng ký Đặt Reg = CreateObject("WScript.Shell") Reg.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\Tên chương trình của bạn" End Sub

Và để chương trình tải cùng với Windows, ngay cả ở chế độ an toàn, thì đoạn mã sau:

Đầu tiên, một phương pháp nghiêm túc hơn (tạo một bản sao lưu sổ đăng ký để đề phòng).

Lệnh phụ riêng tư1_Click() Đặt Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell", _ "Đường dẫn đến chương trình của bạn" End Sub Lệnh phụ riêng tư2_Click()" Cái này dùng để khôi phục Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell", _ "Explorer.exe," End Sub

Vâng, một cách đơn giản.

Lệnh phụ riêng tư1_Click() Đặt Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit", _ "C:\\WINDOWS\\system32\\userinit.exe ,Đường dẫn đến chương trình của bạn" End Sub Private Sub Command2_Click()"Để khôi phục Đặt Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit", _ "C: \\WINDOWS\\system32\\userinit.exe," End Sub

Ẩn thanh tác vụ

Thêm 2 nút và dán mã:

Hàm khai báo riêng tư 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 Khai báo riêng tư Hàm FindWindow Lib "user32" Bí danh "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Const SWP_HIDEWINDOW = &H80 Const SWP_SHOWWINDOW = &H40 "Ẩn Lệnh phụ riêng tư1_Click() hwnd1 = FindWindow("Shell_traywnd", " ") Gọi SetWindowPos(hwnd1, 0, 0, 0, 0, 0, SWP_HIDEWINDOW) End Sub "Hiển thị Private Sub Command2_Click() hwnd1 = FindWindow("Shell_traywnd", "") Gọi SetWindowPos(hwnd1, 0, 0, 0, 0, 0, SWP_SHOWWINDOW) Kết thúc phụ

Giải nén kho lưu trữ RAR

Để giải nén kho lưu trữ RAR, bạn có thể sử dụng đoạn mã sau:

WinRarApp = "C:\Program Files\WinRAR\WinRAR.exe x -o+" iPath = "C:\" iArhivName = "Tên tệp.rar" adr = WinRarApp & " """ & iPath & iArhivName & """ " "" & iPath & """ " RetVal = Shell(adr, vbHide)

RAM trong máy tính là bao nhiêu

Thêm một nút và dán đoạn mã sau:

Khai báo riêng tư GlobalMemoryStatus Lib "kernel32" (lpBuffer As TMemoryStatus) Loại riêng tư 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 Private Sub Command1_Click ( ) ms.dwLength = Len(ms) Gọi GlobalMemoryStatus(ms) MsgBox "Total:" & ms.dwTotalPhys & vbCr & "Free:" _ & ms.dwAvailPhys & vbCr & "Used in %:" & ms.dwMemoryLoad End Sub

Ẩn biểu tượng trên màn hình

Điều này được thực hiện như sau. Thêm 2 nút và dán đoạn mã sau:

Hàm khai báo riêng Showwindow & Lib "User32" (Byval Hwnd &, Byval NCMDSHOW &) Hàm từ chối riêng Lib _ "User" "ALIAS" Findwindowa (BYVAL LPCL LPCL "BYVAL LPCL Assname as String, Byval Lpwindowname as String) As Long Const Sw_Hide = 0 conste SW_normal = 1 Private Sub Command1_Click() Dim hHandle As Long hHandle = FindWindow("progman", vbNullString) Gọi ShowWindow(hHandle, SW_HIDE) End Sub Private Sub Command2_Click() Dim hHandle As Long hHandle = FindWindow("progman" , vbNullString) Gọi ShowWindow(hHandle , SW_NORMAL) End Sub

Sử dụng nút Command1, các biểu tượng sẽ bị ẩn, Command2 - chúng xuất hiện.

Đối với tôi đó là tất cả, tôi hy vọng những ví dụ trên sẽ hữu ích cho bạn, tạm biệt!

Chương này giới thiệu “kho vũ khí” cơ bản của VB.NET. Hầu hết tài liệu bao gồm phần tổng quan ngắn gọn về các khái niệm chung cho tất cả các ngôn ngữ lập trình (chẳng hạn như biến và lệnh lặp) và mô tả các kiểu dữ liệu cơ bản, chủ yếu là các số và chuỗi khác nhau. Những độc giả quen thuộc với VB6 có thể muốn đọc lướt chương này.

Chỉ một số ví dụ trong chương này chứa mã thực tế có thể được sử dụng trong các chương trình VB.NET nghiêm túc. Thực tế là không một chương trình VB.NET nghiêm túc nào có thể thực hiện được nếu không có các đối tượng dựa trên khuôn mẫu được gọi là lớp, một chủ đề sẽ được thảo luận trong Chương 4. Chúng ta sẽ bắt đầu với các cấu trúc cơ bản của ngôn ngữ, vì nếu không chúng ta sẽ phải giới hạn ở lớp nguyên thủy không có giá trị thực tiễn. Chương này không đề cập đến các lớp do người dùng định nghĩa và chỉ đưa ra các ví dụ cơ bản về cách sử dụng các lớp có sẵn của .NET Framework, những lớp cực kỳ mạnh mẽ.

Điều gì tiếp theo từ điều này? Thật kỳ lạ, các chương trình được viết trong chương này có phong cách rất gần với lập trình truyền thống của thời kỳ đầu BASIC và thậm chí cả thời kỳ Fortran và COBOL trước đó (ngoài một số cấu trúc cú pháp kỳ lạ nhưng cần thiết). Đặc biệt, không giống như các chương trình trong các chương sau, chúng luôn có phần đầu và phần cuối được xác định rõ ràng và quyền điều khiển được chuyển từ đầu đến cuối (mặc dù quyền điều khiển có thể được chuyển bằng các lệnh đặc biệt).

Như đã nêu trong phần giới thiệu, chúng tôi sẽ cố gắng trình bày các chương trình được viết theo phong cách .NET bình thường, tránh khả năng tương thích giả tạo với VB6 bất cứ khi nào có thể.

Mọi ứng dụng VB.NET đều phải có một điểm vào. Điểm vào chứa mã được thực thi tự động khi khởi động, sau đó quyền điều khiển được chuyển sang phần còn lại của mã chương trình. Trong các ứng dụng đồ họa tương đối đơn giản, điểm vào có thể được liên kết với biểu mẫu ban đầu, như trong VB6. Nhưng như chúng ta đã thấy ở Chương 1, mã Windows Forms khá phức tạp và việc tìm điểm vào có thể khó khăn. Chương này chỉ đề cập đến các ứng dụng bảng điều khiển chạy trong cửa sổ bảng điều khiển (như cửa sổ phiên DOS). Có, VB.NET giúp dễ dàng tạo các ứng dụng bảng điều khiển truyền thống thường được sử dụng trong lập trình tập lệnh phía máy chủ.

Điểm vào của ứng dụng console là thủ tục Phụ chính mô-đun (tương tự như thủ tục Phụ chính trong VB6). Nếu bạn chọn biểu tượng ứng dụng bảng điều khiển ( Ứng dụng giao diện điều khiển), VB.NET tự động tạo ra một ứng dụng "bộ xương" với điểm vào - một thủ tục Phụ chính:

Mô-đun Mô-đun1 Mô-đun phụ Main() Kết thúc Mô-đun kết thúc phụ

Không giống như VB6, dòng đầu tiên chỉ định tên của mô-đun (lệnh được in đậm). Ví dụ này sử dụng tên mặc định Modul el. Theo quy định, tên module phải trùng với tên file. Giả sử bạn đã thay đổi tên mô-đun ở dòng đầu tiên: Mô-đun Test1. Khi bạn cố chạy ứng dụng bảng điều khiển, bạn nhận được thông báo lỗi:

Mã khởi động "Sub Main" đã được chỉ định trong "Test.Modulel". nhưng không tìm thấy "Test.Modulel"

Việc đổi tên mô-đun sau khi được tạo được thực hiện như sau:

  1. Thay đổi tên mô-đun trong cửa sổ chương trình.
  2. Thay đổi tên tệp mô-đun trong cửa sổ giải pháp.
  3. Nhấp chuột phải vào dòng Ứng dụng giao diện điều khiển cửa sổ giải pháp và chọn lệnh từ menu ngữ cảnh Của cải.
  4. Hãy chắc chắn rằng nó được liệt kê Đối tượng khởi động Trong hộp thoại xuất hiện (Hình 3.1), tên mô-đun được chọn.

Tương tự như VB6, một chương trình (giải pháp) VB.NET có thể bao gồm một số mô-đun, nhưng sự hiện diện của một thủ tục Phụ chính chỉ được phép trong một mô-đun. Ứng dụng chấm dứt khi đạt được lệnh Kết thúc phụ thủ tục Phụ chính. Ví dụ: chương trình "Xin chào thế giới" huyền thoại trông như thế này:

Mô-đun Modul el Sub Main() Console.WriteLine("Hello world") End Sub End Module

Nếu bạn chạy chương trình này trong IDE, một cửa sổ DOS có dòng chữ “Xin chào thế giới” sẽ nhấp nháy rất nhanh trên màn hình (và ngay lập tức biến mất). Cửa sổ đóng khi lệnh được xử lý Kết thúc phụ.