أمثلة Vb6 للبرامج ذات الانقسام. لغة فيجوال بيسك - أمثلة على كتابة التعليمات البرمجية. إخفاء الساعة برمجيا

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

بناء الجملة

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

خيارات

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

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

إرجاع القيم

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

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

Private Sub Form_Load() Dim arrMyArray() As String Dim strMyString As String strMyString = "مرحبًا! كيف حالك؟"

arrMyArray = Split(strMyString) "إرجاع "مرحبًا!" Debug.Print arrMyArray(0) End Subأنظر أيضا:

صفيف

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

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

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

النوع الأول من البرامج أو الوظائف هو الخروج مع رسالة تؤكد الخروج. بشكل عام، افتح بيئة برمجة Visual Basic، وقم بإنشاء مشروع قياسي، ثم ضع زرًا واحدًا في النموذج، وانقر فوق الزر وستفتح نافذة تحرير التعليمات البرمجية، وتحتاج إلى إدخال الكود التالي هناك:" buttonasicons = vbYesNo + vbQuestion response = MsgBox(message, buttonasicons, title) If response = vbYes Then End End If !}

رسالة Beep Dim كأزرار خافتة للسلسلة وأيقونات كعنوان خافت لعدد صحيح كاستجابة خافتة للسلسلة كرسالة سلسلة = "هل تريد الخروج؟"

عنوان = "خروج<>كلمة المرور لبدء البرنامج

كلمة المرور المعتمة، كلمة المرور 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 يمكن أن يكون هناك أي عملية.كم من الوقت يستمر الكمبيوتر؟

وظيفة إعلان خاصة 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 طويل ، ileData كـ 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) كسلسلة 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 يمكنك استخدام الكود التالي:

طريقة API

نسخة الملف "C:\1.txt"، "C:\2.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.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 اكتب NOTIFYCONDATA cbSize بطول hWnd وطويل uID طويل uCallbackMessage طويل وhIcon طويل szTip كسلسلة * 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 = Tip & Chr$( 0) SetTrayI يخدع = 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 Private Sub Command1_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" الاسم المستعار ​"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) وظيفة عامة طويلة ReadIni (Razdel As String، Param) كسلسلة ReadIni = GetValue (Razdel، Param، App.Path & "\test.ini"، "0") نهاية الوظيفة الخاصة GetValue (قسم ByVal كسلسلة، _ مفتاح ByVal كسلسلة، ByVal fFileName كسلسلة، ByVal DefaultValue اختياري كسلسلة = vbNullString) كبيانات خافتة كسلسلة كبيانات سلسلة = 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 As Long، ByVal d wContext As Long) كوظيفة إعلان منطقية خاصة 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 As Long، uProcess as 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 طويل szExeFile كسلسلة * MAX_PATH نوع النهاية Di m hSnapShot طويل خافت uProcess As PROCESSENTRY32 Dim r طويل خاص Sub Command1_Click() List1.Clear hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) إذا hSnapShot = 0 ثم اخرج من النهاية الفرعية إذا uProcess.dwSize = Len(uProcess) r = ProcessFirst(hSnapShot, uProcess) Do while 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

ولكي يتم تحميل البرنامج مع Windows، حتى في الوضع الآمن، ثم هذا الكود:

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

الأمر الفرعي الخاص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 كـ dwAvailPhys كـ طويل dwTotalPageFile كـ dwAvailPageFile كـ طويل dwTotalVirtual كـ dwAvailVirtual كـ طويل نهاية النوع Dim s كأمر فرعي خاص 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&) وظيفة الإعلان الخاص FindWindow Lib _ "user32" الاسم المستعار ​​"FindWindowA" (ByVal lpClassName كسلسلة، ByVal lpWindowName كسلسلة) طالما Const SW_HIDE = 0 Const 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) نهاية الفرعية

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

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

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

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


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


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

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

يقدم هذا الفصل "الترسانة" الأساسية لـ 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. انقر بزر الماوس الأيمن على السطر ConsoleApplicationنافذة الحل وحدد في قائمة السياقفريق ملكيات.
  4. تأكد من إدراجه كائن بدء التشغيلفي مربع الحوار الذي يظهر (الشكل 3.1)، تم تحديد اسم الوحدة.

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

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

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

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

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

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

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

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

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

*إذا تم استخدام المقارنة الثنائية (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 الخاص بك ومعرفة كيفية عملها. قم بتجربة استبدال بياناتك للحصول على فكرة عملية عن ميزة التقسيم.