أمثلة Vb6 للبرامج ذات الانقسام. شرح مصور لبرنامج Visual Basic.NET. أمثلة على العمل مع المجلدات

مرحباً بالجميع، في هذه المقالة أريد أن أعرض لكم أكواد مفيدة للبرامج الصغيرة. والتي يمكنك استخدامها لكتابة برامجك الأكثر جدية، أو كنت تبحث عن هذه الوظائف الموضحة هنا بالضبط.

تم استخدام جميع الرموز في بيئة برمجة Microsoft Visual Basic v6.0.

الخروج مع التأكيد

النوع الأول من البرامج أو الوظائف هو الخروج مع رسالة تؤكد الخروج. بشكل عام، افتح بيئة برمجة Visual Basic، وقم بإنشاء مشروع قياسي، ثم ضع زرًا واحدًا في النموذج، وانقر فوق الزر وستفتح نافذة تحرير التعليمات البرمجية، وتحتاج إلى إدخال الكود التالي هناك:

رسالة Beep Dim كأزرار خافتة للسلسلة وأيقونات كعنوان خافت لعدد صحيح كاستجابة خافتة للسلسلة كرسالة سلسلة = "هل تريد الخروج؟" عنوان = "خروج" buttonasicons = vbYesNo + vbQuestion response = MsgBox(message, buttonasicons, title) If response = vbYes Then End End If !}

كلمة المرور لبدء البرنامج

كلمة المرور المعتمة، كلمة المرور Pword = "12345" Pword = InputBox("أدخل كلمة المرور") إذا كانت كلمة المرور Pword<>PassWord ثم MsgBox "كلمة المرور غير صحيحة" End End If

حيث أن 12345 هي كلمة المرور لبدء البرنامج. ولكن يمكن استخدام هذا الرمز أينما تريد.

إخراج الرسالة

إذا كنت تريد فقط عرض رسالة لشيء ما، فالصق هذا:

رسالة خافتة Beep كسلسلة أزرار خافتة وأيقونات كعنوان خافت صحيح كسلسلة رسالة = "Message" title = "Message)" buttonasicons = vbOKOnly + vbexciamation MsgBox message, buttonsandicons, title !}

الرسم على النموذج

Form_MouseDown الفرعي الخاص (زر كعدد صحيح، Shift كعدد صحيح، X كعدد صحيح، Y كفردي) Form1.CurrentX = X Form1.CurrentY = Y End Sub Private Sub Form_MouseMove (زر كعدد صحيح، Shift كعدد صحيح، X كفردي، Y كـ فردي) إذا كان الزر = 1 ثم سطر (Form1.CurrentX، Form1.CurrentY)-(X، Y)، QBColor(0) End If End Sub

يمكنك تغيير اللون باستخدام المعلمة QBColor(0)، أي. بدلا من 0، ضع رقما آخر.

إعادة تشغيل الكمبيوتر

لإعادة تشغيل جهاز الكمبيوتر الخاص بك: ضع الزر والصق الكود التالي:

خافت strComputer كسلسلة strComputer = "." Set objWMIService = GetObject("winmgmts:" & "(impersonationLevel=impersonate, (Shutdown))!\\" _ & strComputer & "\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem") لـ كل ObjOperatingSystem في colOperatingSystems ObjOperatingSystem.Reboot " لإعادة التشغيل التالي

إطلاق البرنامج في نسخة واحدة

المثال التالي سوف يساعدك على جعل البرنامج يعمل مرة واحدة فقط، أي: إذا تم إعادة تشغيله، فسوف يعرض الرسالة المقابلة. أدخل ما يلي في رمز النموذج:

Private Sub Form_Load() إذا كان App.PrevInstance = True، فعندئذ MsgBox "لقد بدأ المشروع بالفعل!" نهاية النهاية إذا

إيقاف تشغيل الكمبيوتر

لإيقاف تشغيل جهاز الكمبيوتر الخاص بك يمكنك استخدام الكود التالي:

خافت strComputer كسلسلة strComputer = "." Set objWMIService = GetObject("winmgmts:" & "(impersonationLevel=impersonate,(Shutdown))!\\" _ & strComputer & "\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem") لـ كل ObjOperatingSystem في colOperatingSystems ObjOperatingSystem.ShutDown "لإيقاف تشغيل التالي"

إنهاء أي عملية

لإنهاء العملية يمكنك استخدام الكود التالي:

شل "Cmd /x/c Taskkill /f /im ICQlite.exe"، vbvhite

حيث، بدلا من ICQlite.exe يمكن أن يكون هناك أي عملية.

كم من الوقت يستمر الكمبيوتر؟

فيما يلي مثال لكيفية تحديد وقت تشغيل الكمبيوتر. تعتمد هذه الطريقة على استخدام مكتبة kernel32، لذلك في بداية رمز النموذج، قم بتوصيل ملف DLL هذا.

وظيفة الإعلان الخاصة GetTickCount Lib "kernel32" () طويلة "وفي رمز الزر: Dim a_hour، a_دقيقة، a_sec a = Format(GetTickCount() / 1000, "0") "إجمالي الثواني a_days = Int(a / 86400) a = a - a_days * 86400 a_hour = Int(a / 3600) a = a - a_hour * 3600 a_دقيقة = Int(a / 60) a_sec = a - a_دقيقة * 60 MsgBox "جهاز الكمبيوتر الخاص بك قيد التشغيل" & Str(a_days) & "أيام" & Str(a_hour) _ & "ساعات" & Str(a_دقيقة) & "دقائق" & Str(a_sec) & "ثواني"

لقد نظرنا إلى الوظائف البسيطة التي يمكن استخدامها في أي مكان تقريبًا. الآن دعونا نلقي نظرة على أمثلة أكثر جدية، ويمكن أن تساعدك بشكل كبير في كتابة مشاريعك الكبيرة.

أمثلة على العمل مع المجلدات

حذف الدليل

إعلان خاص عن وظيفة RemoveDirectory& Lib _ "kernel32" الاسم المستعار ​​"RemoveDirectoryA" (ByVal lpPathName As String) "إزالة الدليل (فارغ!) PathName$ = "D:\t" code& = RemoveDirectory(PathName) إذا كان الرمز& = 0 ثم "خطأ إزالة الدليل آخر "تم حذف الدليل End If

إنشاء دليل

Sub MakeDir(dirname As String) Dim i As Long، المسار As String Do i = InStr(i + 1, dirname & "\"، "\") المسار = Left$(dirname, i - 1) إذا كان Right$(path ، 1)<>": "And Dir$(path, vbDirectory) = "" ثم مسار MkDir End If Loop until i >= Len(dirname) End Sub Private Sub Command1_Click() Call MakeDir("C:\Soft\1\2\3\ ") نهاية الفرعية

قائمة كافة المجلدات مع المجلدات الفرعية

نضيف حقلين نصيين وزرًا إلى النموذج، اسم حقل النص الأول هو StartText، واسم حقل النص الثاني هو OutText. خاصية الأسطر المتعددة = صحيح، اسم الزر = CmdStart

تشغيل ثابت كـ Boolean Dim AllDirs كمجموعة جديدة Dim next_dir كعدد صحيح Dim dir_name كسلسلة Dim sub_dir كسلسلة Dim i كعدد صحيح Dim txt كسلسلة إذا كان قيد التشغيل ثم قيد التشغيل = False CmdStart.Enabled = False CmdStart.Caption = "Stopping" آخر قيد التشغيل = 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 <>"" إذا كان UCase$(sub_dir)<>"PAGEFILE.SYS" وsub_dir<>"." و sub_dir<>".." ثم sub_dir = dir_name & "\" & sub_dir عند حدوث خطأ، استأنف التالي إذا كان GetAttr(sub_dir) وvbDirectory ثم AllDirs.Add sub_dir End إذا sub_dir = Dir$(, vbDirectory) قم بتكرار DoEvents إذا لم يكن قيد التشغيل، ثم قم بالخروج من Loop txt = "" For i = 1 To AllDirs.Count txt = txt & AllDirs(i) & vbCrLf التالي i OutText.Text = txt MousePointer = vbDefault unning = False End If

الآن نقوم بتشغيل البرنامج، ونكتب في حقل النص StartText: C:\windows، ثم انقر فوق الزر.

حجم الدليل

Const MAX_PATH = 260 نوع خاص FILETIME dwLowDateTime طالما dwHighDateTime طويل نهاية النوع الخاص WIN32_FIND_DATA dwFileAttributes طويل مثل ftCreationTime مثل FILETIME ftLastAccessTime مثل FILETIME ftLastWriteTime مثل FILETIME nFileSizeHigh طويل nFileSizeLow طويل dwReserved0 dwReserved1 كـ cFileName طويل كسلسلة * MAX_PATH بديل كسلسلة * 14 نوع النهاية وظيفة الإعلان الخاص FindFirstFile Lib _ "kernel32" الاسم المستعار ​​"FindFirstFileA" (ByVal lpFileName As String، lpFindFileData As WIN32_FIND_DATA) طويل خاص الإعلان عن الوظيفة FindNextFile Lib _ "kernel32" الاسم المستعار "FindNextFileA" (ByVal hFindFile As بيانات طويلة، lpFindFile كـ WIN32_FIND_DATA) كوظيفة إعلان خاصة طويلة FindClose Lib _ "kernel32" (ByVal hFindFile كـ Long) كـ Long Public Function SizeOf (ByVal DirPath كسلسلة) كـ Double Dim hFind كـ Long Dim fdata كـ WIN32_FIND_DATA Dim dblSize كـ Double Dim sName كسلسلة خافت x طويل عند استئناف الخطأ التالي x = GetAttr(DirPath) إذا كان الخطأ ثم SizeOf = 0: اخرج من الوظيفة إذا (x وvbDirectory) = vbDirectory ثم dblSize = 0 Err.Clear sName = Dir$(EndSlash(DirPath) & "*.* "، vbSystem أو vbHidden أو vbDirectory) إذا كان Err.Number = 0 ثم hFind = FindFirstFile(EndSlash(DirPath) & "*.*"، fdata) إذا كان hFind = 0 ثم قم بالخروج من الوظيفة إذا (fdata.dwFileAttributes) و vbDirectory) = vbDirectory ثم sName = Left$(fdata.cFileName, InStr(fdata.cFileName, vbNullChar) - 1) إذا sName<>"." واسم<>".." ثم 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) إنهاء إذا حدث خطأ آخر، استئناف التالي dblSize = FileLen(DirPath) End If SizeOf = dblSize End Function وظيفة خاصة EndSlash(ByVal PathIn As String) As String If Right$(PathIn, 1) = "\" ثم EndSlash = PathIn Else EndSlash = PathIn & "\" End If End Function Private Sub Form_Load() "استبدل "D:\soft" بالدليل الذي تريد معرفة حجمه MsgBox SizeOf("D:\soft") / 1000000 نهاية الفرعية

أمثلة على العمل مع الملفات

ينسخ

لنفترض أن لدينا ملف اسمه 1.txt في المجلد C:\1\، ونحتاج إلى نسخه إلى C:\2\ للقيام بذلك نكتب الكود التالي:

نسخة الملف "C:\1\1.txt"، "C:\2\1.txt"

ملحوظة! إذا كان الدليل 2 يحتوي بالفعل على ملف يسمى 1.txt، فسيتم استبداله بـ 1.txt من الدليل 1.

إعلان خاص عن وظيفة CopyFile Lib _ "kernel32.dll" الاسم المستعار ​​"CopyFileA" _ (ByVal lpExistingFileName كسلسلة، ByVal lpNewFileName كسلسلة، ByVal bFailIfExists As Long) طالما الأمر الفرعي الخاص1_Click() " انسخ الملف C:\1.txt إلى D :\1.txt.Dim retval As Long "قيمة الإرجاع" انسخ الملف retval = CopyFile("C:\1.txt"، "D:\1.txt"، 1) إذا كان retval = 0 ثم "If خطأ MsgBox "لا يمكن النسخ" آخر "إذا كان كل شيء على ما يرام MsgBox "تم نسخ الملف." End If End Sub

إزالة

على سبيل المثال، نريد حذف الملف 1.txt من جذر محرك الأقراص C:\

قتل("C:\1.txt")

طريقة API

إعلان خاص عن وظيفة حذف الملف Lib _ "kernel32.dll" الاسم المستعار "DeleteFileA" (ByVal lpFileName كسلسلة) كأمر فرعي خاص طويل1_Click() "حذف الملف C:\Samples\anyfile.txt Dim retval As Long "قيمة الإرجاع retval = حذف الملف( "C:\1.txt") إذا كان الإرجاع = 1 ثم MsgBox "تم حذف الملف بنجاح." نهاية الفرعية

متحرك

يمكنك، على سبيل المثال، تحريكه بهذه الطريقة:

نسخة الملف "C:\1.txt"، "C:\2\1.txt" اقتل ("C:\1.txt")

لكن الأمر أفضل على هذا النحو (عبر واجهة برمجة التطبيقات):

إعلان خاص عن وظيفة MoveFile Lib _ "kernel32.dll" الاسم المستعار ​​"MoveFileA" _ (ByVal lpExistingFileName كسلسلة، ByVal lpNewFileName كسلسلة) كأمر فرعي خاص طويل1_Click() Dim retval As Long "قيمة الإرجاع retval = MoveFile("C: \1 .txt", "C:\2\1.txt") إذا كان الإرجاع = 1 ثم MsgBox "تم النقل بنجاح" آخر MsgBox "خطأ" End If End Sub

إعادة تسمية

من أجل إعادة تسمية الملف 1.txt الموجود في C:\ إلى 2.txt يمكنك استخدام الكود التالي:

نسخة الملف "C:\1.txt"، "C:\2.txt" اقتل ("C:\1.txt")

طريقة API

إعلان خاص عن وظيفة MoveFile Lib _ "kernel32.dll" الاسم المستعار ​​"MoveFileA" _ (ByVal lpExistingFileName كسلسلة، ByVal lpNewFileName كسلسلة) كأمر فرعي خاص طويل1_Click() Dim retval As Long "قيمة الإرجاع retval = MoveFile("C: \1 .txt", "C:\2.txt") إذا كان الإرجاع = 1 ثم MsgBox "Success" وإلا MsgBox "Error" End If End Sub

تحديد حجم الملف

يمكن تحديد حجم الملف بطريقتين:

إذا كان من الممكن فتح الملف باستخدام وظيفة OPEN، فيمكنك استخدام وظيفة LOF

تعتيم FileFree كعدد صحيح، تعتيم FileSize بطول FileFree = FreeFile، فتح "C:\WIN\GENERAL.TXT" للإدخال كـ FileFree FileSize = LOF(FileFree)، إغلاق FileFree

أو استخدم وظيفة FileLen

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

إخفاء الساعة برمجيا

أضف زرين والصق الكود:

خيار إعلان خاص صريح لوظيفة FindWindow Lib _ "user32" الاسم المستعار "FindWindowA" (ByVal lpClassName كسلسلة، ByVal lpWindowName كسلسلة) كوظيفة إعلان خاصة طويلة FindWindowEx Lib _ "user32" الاسم المستعار "FindWindowExA" _ (ByVal hWnd1 As طويل، ByVal hWnd2 طويل، ByVal lpsz1 كسلسلة، ByVal lpsz2 كسلسلة) طويل خاص يعلن عن وظيفة ShowWindow Lib _ "user32" (ByVal hwnd طويل، ByVal nCmdShow طويل) طويل خافت hnd طويل خاص الأمر الفرعي 1_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( هند، 0، "TrayClockWClass"، vbNullString) Command1.Caption = "إخفاء الساعة" Command2.Caption = "إظهار الساعة" End Sub

إضافة أيقونة صينية

أضف وحدة نمطية والصق الكود فيها:

قم بتعريف الوظيفة Shell_NotifyIconA Lib _ "SHELL32" (ByVal dwMessage As Long، lpData As NOTIFYICONDATA) كعدد صحيح عدد صحيح NIM_ADD = 0 شكل عام NIM_MODIFY = 1 شكل عام NIM_DELETE = 2 شكل عام NIF_MESSAGE = 1 شكل عام NIF_ICON = 2 شكل عام NIF_TIP = 4 اكتب NOTIFYICONDATA cbSize as long hWnd as long uID as long uFlags as long uCallbackMessage as long hIcon as long szTip as string * 64 نهاية نوع الوظيفة العامة SetTrayIcon (الوضع طويل، hWnd طويل، أيقونة طويلة، طرف كسلسلة) طويل خافت nidTemp As NOTIFYICONDATA nidTemp.cbSize = Len(nidTemp) nidTemp.hWnd = hWnd nidTemp.uID = 0& nidTemp.uFlags = NIF_ICON أو NIF_TIP nidTemp.uCallbackMessage = 0& nidTemp.hIcon = أيقونة nidTemp.szTip = تلميح & Chr$(0 ) SetTrayIcon = Shell_NotifyIconA(Mode, nidTemp) وظيفة النهاية

للاستخدام، أدخل في رمز النموذج:

Private Sub Form_Load() SetTrayIcon NIM_ADD, Me.hWnd, Me.Icon, "اختبار" End Sub "لحذف أمر فرعي خاص1_Click() SetTrayIcon NIM_DELETE, Me.hWnd, 0&, "" End Sub

حظر زر البداية

وظيفة التصريح الخاص FindWindow Lib "user32" الاسم المستعار "FindWindowA" _ (ByVal lpClassName كسلسلة، ByVal lpWindowName كسلسلة) وظيفة التصريح الخاص الطويل FindWindowEx Lib "user32" الاسم المستعار "FindWindowExA" _ (ByVal hWnd1 طويل، ByVal hWnd2 طويل، ByVal lpsz1 كسلسلة، ByVal lpsz2 كسلسلة) طويل، إعلان خاص عن الوظيفة EnableWindow Lib "user32" _ (ByVal hwnd طويل، ByVal fEnable طويل) طويل عام، EnableStartButton (اختياري ممكّن كـ Boolean = True) خافت lHwnd As Long " find hWnd lHwnd& = FindWindowEx(FindWindow("Shell_TrayWnd", ""), 0&, "Button", vbNullString) استدعاء EnableWindow(lHwnd&, CLng(Enabled)) End Sub الأمر الفرعي الخاص1_Click() EnableStartButton False "زر START" تم تعطيل End Sub Private Sub Command2_Click() EnableStartButton صحيح "زر START غير معطل End Sub

قراءة المعلمات من ملف INI

يتصل البرنامج بـ FTP، ويحتوي ملف INI على المعلمات - الخادم، تسجيل الدخول، المنفذ، كلمة المرور.

أولاً، قم بإنشاء ملف INI:

Servname=server usern=تسجيل الدخول pwd=منفذ كلمة المرور=port

ويجب وضعه في مجلد البرنامج. بعد ذلك، أدخل في الوحدة:

وظيفة الإعلان الخاصة WritePrivateProfileString Lib _ "kernel32" الاسم المستعار "WritePrivateProfileStringA" (ByVal lpApplicationName كسلسلة، ByVal lpKeyName كسلسلة، _ ByVal lpString كسلسلة، ByVal lpFileName كسلسلة) طالما أن وظيفة التصريح الخاص GetPrivateProfileString Lib _ "kernel32" الاسم المستعار ​"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) وظيفة عامة طويلة ReadIni (Razdel As String، Param) ) كسلسلة ReadIni = GetValue (Razdel، Param، App.Path & "\test.ini"، "0") نهاية الوظيفة الخاصة GetValue (قسم ByVal كسلسلة، _ مفتاح ByVal كسلسلة، ByVal fFileName كسلسلة، ByVal اختياري DefaultValue As String = vbNullString) As String Dim Data As String Data = String$(1000, Chr$(0)) إذا كان GetPrivateProfileString(Section, Key, DefaultValue, Data, 1000, fFileName) > 0 ثم GetValue = Left$(Data, InStr(Data$, Chr $(0)) - 1) Else GetValue = DefaultValue End If Exit Function End Function

ثم الصق في كود النموذج:

إعلان خاص عن وظيفة InternetOpen Lib _ "wininet.dll" الاسم المستعار "InternetOpenA" (ByVal sAgent As String، ByVal nAccessType As Long، ByVal sProxyName As String، _ ByVal sProxyBypass As String، ByVal nFlags As Long) طالما أعلن خاصًا عن وظيفة InternetConnect Lib _ "wininet.dll" الاسم المستعار "InternetConnectA" (ByVal hInternetSession As Long، ByVal sServerName As String، _ ByVal nServerPort كعدد صحيح، ByVal sUserName كسلسلة، ByVal sPassword كسلسلة، ByVal nService As Long، _ ByVal dwFlags As Long ، ByVal dwContext As Long) أعلن عن وظيفة خاصة طويلة FtpPutFile Lib _ "wininet.dll" الاسم المستعار "FtpPutFileA" (ByVal hFtpSession As Long، ByVal lpszLocalFile كسلسلة، _ ByVal lpszRemoteFile كسلسلة، ByVal dwFlags As Long، ByVal dwContext As طويل) كما تعلن وظيفة منطقية خاصة FtpGetFile Lib _ "wininet.dll" الاسم المستعار ​​"FtpGetFileA" (ByVal hFtpSession As Long، ByVal lpszRemoteFile كسلسلة، _ ByVal lpszNewFile كسلسلة، ByVal fFailIfExists كـ Boolean، ByVal dwFlagsAndAttributes كـ Long، _ ByVal dwFlags طويلة، وسياق ByVal dw طويل) كما تعلن وظيفة منطقية خاصة InternetCloseHandle Lib _ "wininet.dll" (ByVal hInet As Long) كعدد صحيح Dim rc& Dim rs&

وفي رمز الزر:

rc& = InternetOpen(""، 0, vbNullString, vbNullString, 0) rs& = InternetConnect(rc&, ReadIni("عام"، "servname")، "0"، _ ReadIni("عام"، "usern")، ReadIni( "عام"، "pwd")، 1، 0، 0) إذا كان FtpGetFile(rs&، "Your file.txt"، "path Where"، False، 0، 1، 0) = False ثم قم بإنهاء الاتصال بـ InternetCloseHandle(rs&) InternetCloseHandle(rc&)

قائمة العمليات الجارية

قم بإضافة Listbox وزر 1، وأدخل الكود التالي:

خيار إعلان خاص صريح عن الوظيفة CreateToolhelpSnapshot Lib _ الاسم المستعار "Kernel32" ​​"CreateToolhelp32Snapshot" _ (ByVal lFlags As Long، ByVal lProcessID طويل) طالما أن الإعلان الخاص عن الوظيفة ProcessFirst Lib _ "Kernel32" الاسم المستعار "Process32First" _ (ByVal hSnapShot طالما، uProcess كـ PROCESSENTRY32) طويل جدًا أعلن عن وظيفة ProcessNext Lib _ "Kernel32" الاسم المستعار "Process32Next" _ (ByVal hSnapShot طويل، uProcess كـ PROCESSENTRY32) طويل جدًا أعلن خاصًا Sub CloseHandle Lib "Kernel32" (ByVal hPass طويل ) خاص Const TH32CS_SNAPPROCESS طويل = 2& Const خاص MAX_PATH كعدد صحيح = 260 نوع خاص PROCESSENTRY32 dwSize طويل cntUsage طويل th32ProcessID طويل th32DefaultHeapID طويل th32ModuleID طويل cntThreads طويل th32ParentProcessID طويل pcPriClassBase طويل dwFlags طويل s zExeFile كسلسلة * MAX_PATH نوع النهاية خافت hSnapShot طويل خافت uProcess مثل PROCESSENTRY32 خافت r طويل خاص Command1_Click() List1.Clear hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) إذا hSnapShot = 0 ثم اخرج من النهاية الفرعية إذا uProcess.dwSize = Len(uProcess) r = ProcessFirst (hSnapShot, uProcess) افعل بينما r List1.AddItem uProcess.szExeFile r = ProcessNext(hSnapShot, uProcess) حلقة استدعاء CloseHandle(hSnapShot) End Sub

وضع البرنامج في بدء التشغيل

لكي يتم تحميل البرنامج مع نظام التشغيل Windows، مثل بعض البرامج الأخرى، يمكنك استخدام السجل:

أضف زرين والكود التالي:

Private Sub Command1_Click() "إدخال التسجيل Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\Name لبرنامجك"، _ "المسار إلى برنامجك" End Sub Private Sub Command2_Click() "حذف من السجل Set Reg = CreateObject("WScript.Shell") Reg.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\اسم برنامجك" End Sub

ولكي يتم تحميل البرنامج مع الويندوز، حتى في الوضع الآمن، قم بوضع الكود التالي:

أولاً، طريقة أكثر جدية (عمل نسخة احتياطية من السجل تحسبًا لذلك).

الأمر الفرعي الخاص1_Click() Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell"، _ "المسار إلى برنامجك" End Sub Private Sub Command2_Click()" هذا من أجل الاسترداد Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell"، _ "Explorer.exe،" End Sub

حسنا، طريقة بسيطة.

الأمر الفرعي الخاص1_Click() Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit"، _ "C:\\WINDOWS\\system32\\userinit.exe ، المسار إلى برنامجك" End Sub Private Sub Command2_Click()" لاستعادة Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit"، _ "C: \\WINDOWS\\system32\\userinit.exe" End Sub

إخفاء شريط المهام

أضف زرين والصق الكود:

مجموعة وظائف الإعلان الخاصWindowPos 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) طالما أعلن خاص الوظيفة FindWindow Lib "user32" الاسم المستعار ​​"FindWindowA" _ (ByVal lpClassName As String، ByVal lpWindowName As String) As Long Const SWP_HIDEWINDOW = &H80 Const SWP_SHOWWINDOW = &H40 "إخفاء الأمر الفرعي الخاص1_Click() hwnd1 = FindWindow("Shell_traywnd", " ") استدعاء SetWindowPos(hwnd1, 0, 0, 0, 0, 0, SWP_HIDEWINDOW) End Sub "يظهر أمر فرعي خاص2_Click() hwnd1 = FindWindow("Shell_traywnd", "") استدعاء SetWindowPos(hwnd1, 0, 0, 0, 0، 0، SWP_SHOWWINDOW) نهاية الفرعية

قم بفك ضغط أرشيف RAR

لفك ضغط أرشيف RAR، يمكنك استخدام الكود التالي:

WinRarApp = "C:\Program Files\WinRAR\WinRAR.exe x -o+" iPath = "C:\" iArhivName = "اسم الملف.rar" adr = WinRarApp & " """ & iPath & iArhivName & """ " "" & iPath & """ " RetVal = Shell(adr, vbHide)

ما مقدار ذاكرة الوصول العشوائي الموجودة في الكمبيوتر

أضف زر واحد وألصق الكود التالي:

إعلان خاص Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer كـ TMemoryStatus) نوع خاص TMemoryStatus dwLength كـ dwMemoryLoad كـ طويل dwTotalPhys كـ dwTotalPhys كـ طويل dwAvailPageFile كـ طويل dwAvailPageFile كـ طويل dwTotalVirtual كـ dwAvailVirtual كـ طويل أمر فرعي خاص TMemoryStatus1_Click( ) ms.dwLength = Len(ms) استدعاء GlobalMemoryStatus(ms) MsgBox "الإجمالي:" & ms.dwTotalPhys & vbCr & "مجاني:" _ & ms.dwAvailPhys & vbCr & "المستخدم في %:" & ms.dwMemoryLoad End Sub

إخفاء أيقونات سطح المكتب

هذا يفعل كما يلي. أضف زرين وألصق الكود التالي:

وظيفة الإعلان الخاص Showwindow & Lib "User32" (Byval Hwnd &، Byval NCMDSHOW &) 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 أمر فرعي خاص1_Click() Dim hHandle As Long hHandle = FindWindow("progman", vbNullString) استدعاء ShowWindow(hHandle, SW_HIDE) End Sub أمر فرعي خاص2_Click() Dim hHandle As Long hHandle = FindWindow("progman" ، vbNullString) استدعاء ShowWindow(hHandle، SW_NORMAL) End Sub

باستخدام الزر Command1، تكون الرموز مخفية، Command2 - تظهر.

هذا كل شيء بالنسبة لي، وآمل أن تكون الأمثلة المذكورة أعلاه مفيدة لك، وداعا!

استخدام وظيفة التقسيم في VBA Excel، وبناء الجملة والمعلمات الخاصة بها. القيم التي يتم إرجاعها بواسطة الدالة سبليت. أمثلة على الاستخدام.

تم تصميم وظيفة التقسيم في VBA Excel لتقسيم سلسلة إلى سلاسل فرعية باستخدام علامات فاصلة خاصة. يمكن أن يكون الفاصل حرفًا واحدًا أو سلسلة من عدة أحرف. الدالة سبليت هي عكس الدالة، التي تقوم بإنشاء سلسلة واحدة من مجموعة من السلاسل الفرعية.

بناء جملة الوظيفة

انقسام (التعبير،،،)

المعلمة المطلوبة لوظيفة الانقسام هي التعبير - إذا لم يتم تحديد المعلمات الأخرى بشكل صريح، فسيتم استخدام قيمها الافتراضية.

معلمات الوظيفة

*إذا تم استخدام المقارنة الثنائية (0 أو CompareMethod.Binary)، فستكون الدالة حساسة لحالة الأحرف. إذا تم استخدام مقارنة نصية (1 أو CompareMethod.Text)، فإن الدالة ليست حساسة لحالة الأحرف.

إرجاع القيم

تقوم الدالة سبليت بإرجاع مصفوفة أحادية البعد، مفهرسة من الصفر، تحتوي على المعلمة المحددة حدعدد السلاسل الفرعية. في أغلب الأحيان، يتم استخدام الدالة Split مع قيمة المعلمة حدبشكل افتراضي، يساوي -1، عندما يتم إرجاع كافة السلاسل الفرعية الموجودة في السلسلة المصدر.

مثال 1

Sub Test1() Dim a() As String a = Split("vremya ne zhdet") MsgBox a(0) & vbNewLine & a(1) & vbNewLine & a(2) نهاية النتيجة الفرعية في MsgBox: وقت شمال شرق zhdet

يستخدم المثال الأول محددو حدتقصير.

مثال 2

Sub Test2() Dim a() As String a = Split("vremya-ne-zhdet"،"-"، 2) MsgBox a(0) & vbNewLine & a(1) النتيجة الفرعية النهائية في MsgBox: وقت ne-zhdet

في المثال الثاني محدد= "-"، أ حد = 2.

تقوم الدالة Split بتعيين النتائج باستخدام نص محدد مسبقًا، والذي يمكن استخدامه في سطر المهمة مع أو بدون أقواس فارغة. في الأمثلة أعلاه، تم تحديد المصفوفة بدون أقواس.

يمكنك نسخ الرموز من الأمثلة المذكورة إلى وحدة VBA في مصنف Excel الخاص بك ومعرفة كيفية عملها. قم بتجربة استبدال بياناتك الخاصة للحصول على فكرة عملية عن ميزة التقسيم.

يقدم هذا الفصل "الترسانة" الأساسية لـ VB.NET. تتكون معظم المواد من نظرة عامة موجزة عن المفاهيم المشتركة بين جميع لغات البرمجة (مثل المتغيرات وتعليمات التكرار) ووصف لأنواع البيانات الأساسية، وخاصة الأرقام والسلاسل المختلفة. قد يرغب القراء المطلعون على VB6 في قراءة هذا الفصل.

تحتوي بعض الأمثلة فقط في هذا الفصل على تعليمات برمجية فعلية يمكن استخدامها في برامج VB.NET الجادة. والحقيقة هي أنه لا يوجد برنامج VB.NET جاد يمكنه الاستغناء عن كائنات قائمة على القالب تسمى الفئات، وهو موضوع سيتم مناقشته في الفصل الرابع. سنبدأ بالبنيات الأساسية للغة، لأنه بخلاف ذلك سيتعين علينا أن نقتصر على الطبقات البدائية التي ليس لها أي قيمة عملية. لا يغطي هذا الفصل الفئات المعرفة من قبل المستخدم ويعرض فقط الأمثلة الأساسية لكيفية استخدام الفئات المضمنة في .NET Framework، والتي تعتبر قوية للغاية.

ماذا يتبع من هذا؟ ومن الغريب أن البرامج المكتوبة في هذا الفصل قريبة جدًا من حيث الأسلوب من البرمجة التقليدية لعصر BASIC المبكر وحتى عصر Fortran و COBOL الذي سبقه (باستثناء بعض التركيبات النحوية الغريبة ولكنها ضرورية). على وجه الخصوص، على عكس البرامج في الفصول اللاحقة، يكون لها دائمًا بداية ونهاية محددة بوضوح، ويتم نقل التحكم من البداية إلى النهاية (على الرغم من أنه يمكن نقل التحكم بواسطة أوامر خاصة).

كما ذكرنا في المقدمة، سنحاول تقديم برامج مكتوبة بأسلوب .NET العادي، مع تجنب التوافق الاصطناعي مع VB6 كلما أمكن ذلك.

يجب أن يكون لكل تطبيق VB.NET نقطة دخول. تحتوي نقطة الإدخال على كود يتم تنفيذه تلقائيًا عند بدء التشغيل، وبعد ذلك يتم نقل التحكم إلى بقية كود البرنامج. في تطبيقات الرسومات البسيطة نسبيًا، قد ترتبط نقطة الإدخال بالنموذج الأولي، كما هو الحال في VB6. ولكن كما رأينا في الفصل الأول، فإن التعليمات البرمجية لـ Windows Forms معقدة للغاية وقد يكون العثور على نقطة الإدخال أمرًا صعبًا. يغطي هذا الفصل فقط تطبيقات وحدة التحكم التي تعمل في نافذة وحدة التحكم (مثل نافذة جلسة DOS). نعم، VB.NET يجعل من السهل إنشاء تطبيقات وحدة التحكم التقليدية المستخدمة غالبًا في برمجة البرمجة النصية من جانب الخادم.

نقطة الدخول لتطبيق وحدة التحكم هي الإجراء الرئيسية من الباطنالوحدة النمطية (مماثلة للإجراء الرئيسية من الباطنفي VB6). إذا قمت بتحديد رمز تطبيق وحدة التحكم ( استمارة القنصلية)، يقوم VB.NET تلقائيًا بإنشاء تطبيق "هيكل عظمي" بنقطة إدخال - وهو إجراء الرئيسية من الباطن:

الوحدة النمطية Module1 Sub Main() End Sub End Module

على عكس VB6، يحدد السطر الأول اسم الوحدة النمطية (الأمر مكتوب بالخط العريض). يستخدم هذا المثال الاسم الافتراضي Modul el. وفقا للقواعد، يجب أن يتطابق اسم الوحدة مع اسم الملف. لنفترض أنك قمت بتغيير اسم الوحدة في السطر الأول: Module Test1. عند محاولة تشغيل تطبيق وحدة تحكم، تتلقى رسالة خطأ:

تم تحديد رمز بدء التشغيل "Sub Main" في "Test.Modulel". ولكن لم يتم العثور على "Test.Modulel".

تتم إعادة تسمية الوحدة النمطية بعد إنشائها كما يلي:

  1. قم بتغيير اسم الوحدة في نافذة البرنامج.
  2. قم بتغيير اسم ملف الوحدة في نافذة الحل.
  3. انقر بزر الماوس الأيمن على السطر استمارة القنصليةنافذة الحل وحدد الأمر من قائمة السياق ملكيات.
  4. تأكد من إدراجه كائن بدء التشغيلفي مربع الحوار الذي يظهر (الشكل 3.1)، تم تحديد اسم الوحدة.

قياسًا على VB6، يمكن أن يتكون برنامج (حل) VB.NET من عدة وحدات، ولكن وجود إجراء الرئيسية من الباطنمسموح به فقط في وحدة واحدة. ينتهي التطبيق عند الوصول إلى الأمر نهاية الفرعيةإجراءات الرئيسية من الباطن. على سبيل المثال، يبدو البرنامج الأسطوري "Hello World" كما يلي:

الوحدة النمطية Modul el Sub Main() Console.WriteLine("Hello World") End Sub End Module

إذا قمت بتشغيل هذا البرنامج في IDE، فستومض نافذة DOS بسرعة كبيرة على الشاشة بالكلمات "Hello World" (وتختفي على الفور). يتم إغلاق النافذة عند معالجة الأمر نهاية الفرعية.

أهلاً بكم!
اليوم أود أن أتحدث عن التشفير. لقد قدمت مثالاً على استخدام التشفير الخاص - إخفاء المعلومات. تخفي هذه الطريقة حقيقة تشفير البيانات. هناك أنواع عديدة من إخفاء المعلومات. أود أن أتحدث عن طريقة LBS، التي تخفي البيانات في البتات ذات الترتيب المنخفض للبيانات الصوتية. يبدو أن المستخدمين يتبادلون الملفات الصوتية، لكنهم في الواقع يتبادلون بيانات حساسة. أي شخص لا يعرف عن هذه الطريقة لن يشك حتى في تبادل البيانات السرية. في بعض الحالات يمكن أن يكون هذا مفيدًا جدًا.
كيف تعمل؟
يحتوي ملف WAVE-PCM (غير مضغوط) على بيانات صوتية. في الواقع، الصوت هو حدث تمثيلي، أي. مستمر. ومن أجل تحويلها إلى شكل رقمي، تحتاج إلى تكميمها مع بعض الخسائر. تتميز هذه العملية بمعلمتين: عمق البت وتردد أخذ العينات. يؤثر عمق البت على عدد مستويات الإشارة التي يمكن احتواؤها في كل عينة. يؤثر معدل أخذ العينات على الحد الأقصى للتردد الذي يمكن أن تحتوي عليه البيانات الصوتية:

في حالتنا، نحن مهتمون فقط بعمق البت للبيانات الصوتية. يمكن أن يكون 32، 24، 16، ... بت لكل عينة. الفكرة الرئيسية لإخفاء المعلومات (في حالتنا) هي إعادة كتابة البتات ذات الترتيب المنخفض من البيانات الصوتية. كلما زاد عدد البتات التي نستخدمها، أصبح التشويه أقوى.
بصريا:


كما يتبين من الشكل، تقوم الطريقة بتخزين جميع البيانات المشفرة في أجزاء معينة من البيانات الصوتية (في هذه الحالة، 4 بتات لكل عينة). لاحظ أيضًا أنه لحفظ البيانات، يلزمك استخدام ملف صوتي أكبر حجمًا من الملف المشفر. على سبيل المثال، إذا استخدمنا 3 بتات للتشفير، فيجب أن يكون الملف الصوتي أكبر بمقدار 16/3 مرة على الأقل مما يتم تشفيره. أقول 16 لأنني أستخدم 16 بت لكل عينة في مثالي.
في المثال المرفق أحتفظ أيضًا باسم الملف الأصلي. تنسيق البيانات واضح:


عند حدوث عملية التغليف، يتم أخذ كل بايت من الملف المشفر. ثم يتم استخراج البتات الضرورية من البايت التالي، ويتم أيضًا مسح البتات المقابلة في البيانات الصوتية. يتم بعد ذلك تعيين هذه البتات باستخدام عملية bitwise OR. يتم استخدام الأقنعة والتحولات لاستخراج البتات المطلوبة. تترك الأقنعة البتات المطلوبة، بينما تضعها الإزاحات في بداية البايت.
التفريغ يحدث عكس ذلك تماما. يتم استخراج البتات من الملف الصوتي ويتم تجميع الملف الأصلي. طيف الملف الصوتي حسب عمق البت:

آمل أن تكون هذه المراجعة القصيرة مفيدة.
شكرًا لكم على اهتمامكم.

تقوم الدالة بإرجاع مصفوفة أحادية البعد تحتوي على عدد محدد من السلاسل الفرعية. هذه الوظيفة هي عكس وظيفة الانضمام.

بناء الجملة

ينقسم( تعبير[، محدد[، حد[، قارن]])

خيارات

تعبير- تعبير من نوع السلسلة يحتوي على سلاسل فرعية بمحددات.
محدد- تعبير من النوع المتغير (سلسلة) يحدد الحرف المستخدم كمحدد. إذا تم حذف الوسيطة، يتم استخدام حرف المسافة (" ").
حد- تعبير طويل يشير إلى عدد العناصر المطلوب إرجاعها. الافتراضي هو -1 (إرجاع كافة العناصر).
يقارن- معلمة رقمية تشير إلى طريقة المقارنة.

معامل يقارنيمكن أن تأخذ القيم التالية:

إرجاع القيم

إرجاع مصفوفة أحادية البعد من النوع المتغير (سلسلة).
إذا كان طول معلمة التعبير صفرًا، فستُرجع الدالة صفيفًا فارغًا. إذا كان طول المعلمة الفاصلة صفرًا، فستُرجع الدالة مصفوفة تحتوي على عنصر تعبير واحد.

مثال الاستخدام

Private Sub Form_Load() Dim arrMyArray() As String Dim strMyString As String strMyString = "مرحبًا! كيف حالك؟" arrMyArray = Split(strMyString) "إرجاع "مرحبًا!" Debug.Print arrMyArray(0) End Sub

أنظر أيضا:مجموعة مصفوفة،