Έτοιμα έργα σε VB6. Εικονογραφημένο μάθημα για την έξοδο της Visual Basic.NET με επιβεβαίωση

08.12.2023

Χρησιμοποιώντας τη συνάρτηση Split στο VBA Excel, τη σύνταξη και τις παραμέτρους της. Τιμές που επιστρέφονται από τη συνάρτηση Split. Παραδείγματα χρήσης.

Η συνάρτηση Split έχει σχεδιαστεί στο VBA Excel για να χωρίζει μια συμβολοσειρά σε υποσυμβολοσειρές χρησιμοποιώντας ειδικά σημάδια οριοθέτησης. Το διαχωριστικό μπορεί να είναι κάτι σαν ξεχωριστό χαρακτήρα, και μια συμβολοσειρά πολλών χαρακτήρων. Η συνάρτηση Split είναι το αντίστροφο της συνάρτησης, η οποία δημιουργεί μια συμβολοσειρά από έναν πίνακα υποσυμβολοσειρών.

Σύνταξη συνάρτησης

Διαίρεση (Έκφραση,,,)

Η απαιτούμενη παράμετρος της συνάρτησης Split είναι Έκφραση - εάν οι άλλες παράμετροι δεν καθορίζονται ρητά, χρησιμοποιούνται οι προεπιλεγμένες τιμές τους.

Παράμετροι συνάρτησης

*Εάν χρησιμοποιείται δυαδική σύγκριση (0 ή CompareMethod.Binary), η συνάρτηση κάνει διάκριση πεζών-κεφαλαίων. Εάν χρησιμοποιείται σύγκριση κειμένου (1 ή CompareMethod.Text), η συνάρτηση δεν κάνει διάκριση πεζών-κεφαλαίων.

Επιστρεφόμενες τιμές

Η συνάρτηση Split επιστρέφει έναν μονοδιάστατο πίνακα, με ευρετήριο από το μηδέν, που περιέχει την καθορισμένη παράμετρο Οριοαριθμός υποσυμβολοσειρών. Τις περισσότερες φορές, η συνάρτηση Split χρησιμοποιείται με την τιμή της παραμέτρου Οριοαπό προεπιλογή, ίσο με -1, όταν επιστρέφονται όλες οι υποσυμβολοσειρές που βρίσκονται στη συμβολοσειρά πηγής.

Παράδειγμα 1

Sub Test1() Dim a() As String a = Split("vremya ne zhdet") MsgBox a(0) & vbNewLine & a(1) & vbNewLine & a(2) End Sub αποτέλεσμα στο MsgBox: φορά ne zhdet

Το πρώτο παράδειγμα χρησιμοποιεί ΟριοθέτηςΚαι Οριοαπό προεπιλογή.

Παράδειγμα 2

Sub Test2() Dim a() As String a = Split("vremya-ne-zhdet","-", 2) MsgBox a(0) & vbNewLine & a(1) End Sub αποτέλεσμα στο MsgBox: φορά ne-zhdet

Στο δεύτερο παράδειγμα Οριοθέτης= "-", α Οριο = 2.

Η συνάρτηση Split εκχωρεί αποτελέσματα χρησιμοποιώντας ένα προδηλωμένο κείμενο , το οποίο μπορεί να χρησιμοποιηθεί στη γραμμή ανάθεσης με ή χωρίς κενές παρενθέσεις. Στα παραπάνω παραδείγματα, ο πίνακας προσδιορίζεται χωρίς παρενθέσεις.

Μπορείτε να αντιγράψετε τους κωδικούς από τα παραδείγματα που δίνονται στη μονάδα VBA της εργασίας σας Βιβλία εργασίας του Excel, δείτε πώς λειτουργούν. Πειραματιστείτε με την αντικατάσταση των δικών σας δεδομένων για να αποκτήσετε μια πρακτική αίσθηση για τη δυνατότητα Split.

Αυτό το κεφάλαιο εισάγει το βασικό «οπλοστάσιο» του VB.NET. Το μεγαλύτερο μέρος του υλικού προέρχεται από σύντομη επισκόπησηέννοιες κοινές σε όλες τις γλώσσες προγραμματισμού (όπως μεταβλητές και οδηγίες βρόχου) και περιγραφή βασικών τύπων δεδομένων, κυρίως διαφορετικούς αριθμούςκαι γραμμές. Οι αναγνώστες που είναι εξοικειωμένοι με το VB6 μπορεί να θέλουν να περάσουν από πάνω τους αυτό το κεφάλαιο.

Μόνο μερικά παραδείγματα σε αυτό το κεφάλαιο περιέχουν πραγματικό κώδικα που μπορεί να χρησιμοποιηθεί σε σοβαρά προγράμματα VB.NET. Το γεγονός είναι ότι κανένα σοβαρό πρόγραμμα VB.NET δεν μπορεί να κάνει χωρίς αντικείμενα που βασίζονται σε πρότυπα που ονομάζονται κλάσεις, ένα θέμα που θα καλύψουμε στο Κεφάλαιο 4. Θα ξεκινήσουμε με τις βασικές δομές της γλώσσας, γιατί διαφορετικά θα έπρεπε να περιοριστούμε σε πρωτόγονες μαθήματα που δεν έχουν πρακτική αξία. Αυτό το κεφάλαιο δεν καλύπτει κλάσεις που ορίζονται από το χρήστη και δείχνει μόνο βασικά παραδείγματα για τον τρόπο χρήσης των ενσωματωμένων κλάσεων του .NET Framework, οι οποίες είναι εξαιρετικά ισχυρές.

Τι προκύπτει από αυτό; Παραδόξως, τα προγράμματα που γράφτηκαν σε αυτό το κεφάλαιο είναι πολύ κοντά σε στυλ με τον παραδοσιακό προγραμματισμό της πρώιμης εποχής BASIC και ακόμη και της εποχής Fortran και COBOL που προηγήθηκε (εκτός από μερικές περίεργες αλλά απαραίτητες συντακτικές κατασκευές). Συγκεκριμένα, σε αντίθεση με τα προγράμματα σε επόμενα κεφάλαια, έχουν πάντα μια σαφώς καθορισμένη αρχή και τέλος και ο έλεγχος μεταφέρεται από την αρχή στο τέλος (αν και ο έλεγχος μπορεί να μεταφερθεί με ειδικές εντολές).

Όπως αναφέρθηκε στην εισαγωγή, θα προσπαθήσουμε να παρουσιάσουμε προγράμματα γραμμένα σε κανονικό στυλ .NET, αποφεύγοντας την τεχνητή συμβατότητα με το VB6 όποτε είναι δυνατόν.

Κάθε εφαρμογή VB.NET πρέπει να έχει ένα σημείο εισόδου. Το σημείο εισόδου περιέχει κωδικό που εκτελείται αυτόματα κατά την εκκίνηση, μετά την οποία ο έλεγχος μεταφέρεται στον υπόλοιπο κώδικα του προγράμματος. Σε σχετικά απλά εφαρμογές γραφικώνΤο σημείο εισόδου μπορεί να συσχετιστεί με την αρχική φόρμα, όπως στο VB6. Όμως, όπως είδαμε στο Κεφάλαιο 1, ο κώδικας των Windows Forms είναι αρκετά περίπλοκος και η εύρεση του σημείου εισόδου μπορεί να είναι δύσκολη. Αυτό το κεφάλαιο καλύπτει μόνο τις εφαρμογές κονσόλας που εκτελούνται σε ένα παράθυρο κονσόλας (όπως ένα παράθυρο συνεδρίας DOS). Ναι, το VB.NET διευκολύνει τη δημιουργία παραδοσιακών εφαρμογών κονσόλας που χρησιμοποιούνται συχνά στον προγραμματισμό δέσμης ενεργειών από την πλευρά του διακομιστή.

Το σημείο εισόδου μιας εφαρμογής κονσόλας είναι η διαδικασία Sub Mainενότητα (ανάλογη με τη διαδικασία Sub Mainσε VB6). Εάν επιλέξετε το εικονίδιο της εφαρμογής της κονσόλας ( Εφαρμογή Κονσόλας), το VB.NET δημιουργεί αυτόματα μια εφαρμογή "σκελετός" με σημείο εισόδου - διαδικασία Sub Main:

Module 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 μπορεί να αποτελείται από πολλές ενότητες, αλλά την παρουσία μιας διαδικασίας Sub Mainεπιτρέπεται μόνο σε μία ενότητα. Η εφαρμογή τερματίζεται μόλις φτάσει στην εντολή End Subδιαδικασίες Sub Main. Για παράδειγμα, το θρυλικό πρόγραμμα "Hello world" μοιάζει με αυτό:

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

Εάν εκτελέσετε αυτό το πρόγραμμα στο IDE, ένα παράθυρο DOS με τις λέξεις "Hello world" θα αναβοσβήσει πολύ γρήγορα στην οθόνη (και θα εξαφανιστεί αμέσως). Το παράθυρο κλείνει όταν γίνεται επεξεργασία της εντολής End Sub.

Η συνάρτηση επιστρέφει έναν μονοδιάστατο πίνακα που περιέχει έναν καθορισμένο αριθμό υποσυμβολοσειρών. Αυτή η λειτουργίαείναι το αντίστροφο της συνάρτησης Join.

Σύνταξη

Σπλιτ( Έκφραση[, Οριοθέτης[, Όριο[, Σύγκριση]])

Επιλογές

Εκφραση- μια έκφραση τύπου String που περιέχει υποσυμβολοσειρές με οριοθέτες.
Οριοθέτης- μια έκφραση τύπου Variant (String) που ορίζει τον χαρακτήρα που χρησιμοποιείται ως οριοθέτης. Εάν το όρισμα παραλειφθεί, χρησιμοποιείται ο χαρακτήρας διαστήματος (" ").
Οριο- μια παρατεταμένη έκφραση που υποδεικνύει τον αριθμό των στοιχείων που πρέπει να επιστραφούν. η προεπιλογή είναι -1 (επιστροφή όλων των στοιχείων).
Συγκρίνω- μια αριθμητική παράμετρος που υποδεικνύει τη μέθοδο σύγκρισης.

Παράμετρος Συγκρίνωμπορεί να λάβει τις ακόλουθες τιμές:

Επιστρεφόμενες τιμές

Επιστρέφει έναν μονοδιάστατο πίνακα τύπου Variant (String).
Εάν η παράμετρος Έκφραση έχει μηδενικό μήκος, η συνάρτηση επιστρέφει έναν κενό πίνακα. Εάν η παράμετρος Οριοθέτη έχει μηδενικό μήκος, η συνάρτηση θα επιστρέψει έναν πίνακα με ένα στοιχείο Έκφρασης.

Παράδειγμα χρήσης

Private Sub Form_Load() Dim arrMyArray() As String Dim strMyString As String strMyString = "Γεια σας! Πώς είστε;"

arrMyArray = Split(strMyString) "επιστρέφει "Hello!" Debug.Print arrMyArray(0) End SubΔείτε επίσης:
Παράταξη
Σήμερα θα ήθελα να μιλήσω για την κρυπτογραφία. Έκανα ένα παράδειγμα χρήσης ειδικής κρυπτογραφίας - στεγανογραφίας. Αυτή η μέθοδος κρύβει το ίδιο το γεγονός της κρυπτογράφησης δεδομένων. Υπάρχουν πολλά είδη στεγανογραφίας. Θα ήθελα να μιλήσω για τη μέθοδο LBS, η οποία κρύβει δεδομένα στα bits χαμηλής τάξης των δεδομένων ήχου. Φαίνεται ότι οι χρήστες ανταλλάσσουν αρχεία ήχου, αλλά στην πραγματικότητα ανταλλάσσουν ευαίσθητα δεδομένα. Όποιος δεν γνωρίζει αυτή τη μέθοδο δεν θα υποψιαστεί καν την ανταλλαγή μυστικών δεδομένων. Σε ορισμένες περιπτώσεις αυτό μπορεί να είναι πολύ χρήσιμο.
Πώς λειτουργεί;
Το αρχείο WAVE-PCM (ασυμπίεστο) περιέχει δεδομένα ήχου. Στην πραγματικότητα, ο ήχος είναι ένα αναλογικό γεγονός, δηλ. συνεχής. Για να το μετατρέψετε σε ψηφιακή μορφή, πρέπει να το κβαντίσετε με κάποιες απώλειες. Αυτή η διαδικασία χαρακτηρίζεται από δύο παραμέτρους: το βάθος bit και τη συχνότητα δειγματοληψίας. Το βάθος bit επηρεάζει πόσα επίπεδα σήματος μπορούν να περιέχονται σε κάθε δείγμα. Η συχνότητα δειγματοληψίας επηρεάζει τη μέγιστη συχνότητα που μπορεί να περιέχεται στα δεδομένα ήχου:

Στην περίπτωσή μας, μας ενδιαφέρει μόνο το βάθος bit των δεδομένων ήχου. Μπορεί να είναι 32, 24, 16, ... bit ανά δείγμα. Η κύρια ιδέα της στεγανογραφίας (στην περίπτωσή μας) είναι να ξαναγράψουμε τα χαμηλής τάξης bits δεδομένων ήχου. Όσο περισσότερα bits χρησιμοποιούμε, τόσο ισχυρότερη θα είναι η παραμόρφωση.
Οπτικά:


Όπως φαίνεται από το σχήμα, η μέθοδος αποθηκεύει όλα τα κρυπτογραφημένα δεδομένα σε ορισμένα bit δεδομένων ήχου (στην περίπτωση αυτή, 4 bit για κάθε δείγμα). Σημειώστε επίσης ότι για να αποθηκεύσετε δεδομένα πρέπει να χρησιμοποιήσετε ένα αρχείο ήχου μεγαλύτερο σε μέγεθος από το κρυπτογραφημένο αρχείο. Για παράδειγμα, εάν χρησιμοποιούμε 3 bit για κωδικοποίηση, το αρχείο ήχου θα πρέπει να είναι τουλάχιστον 16/3 φορές μεγαλύτερο από αυτό που κωδικοποιείται. Λέω 16 επειδή χρησιμοποιώ 16 bit ανά δείγμα στο παράδειγμά μου.
Στο συνημμένο παράδειγμα διατηρώ επίσης το αρχικό όνομα αρχείου. Η μορφή δεδομένων είναι σαφής:


Όταν συμβαίνει συσκευασία, κάθε byte λαμβάνεται από το κρυπτογραφημένο αρχείο. Στη συνέχεια, τα απαραίτητα bit εξάγονται από το επόμενο byte και τα αντίστοιχα bit στα δεδομένα ήχου διαγράφονται επίσης. Στη συνέχεια, αυτά τα bit ορίζονται χρησιμοποιώντας μια λειτουργία bitwise OR. Οι μάσκες και οι μετατοπίσεις χρησιμοποιούνται για την εξαγωγή των απαιτούμενων bits. Οι μάσκες αφήνουν τα απαραίτητα bits και οι μετατοπίσεις τα τοποθετούν στην αρχή του byte.
Η αποσυσκευασία συμβαίνει ακριβώς το αντίθετο. Τα bits εξάγονται από το αρχείο ήχου και το αρχικό αρχείο συναρμολογείται. Φάσμα ενός αρχείου ήχου ανάλογα με το βάθος bit:

Ελπίζω αυτή η σύντομη κριτική να είναι χρήσιμη.
Σας ευχαριστώ για την προσοχή σας.

Γεια σε όλους, σε αυτό το άρθρο θέλω να σας δείξω χρήσιμους κωδικούς για μικρά προγράμματα. Τα οποία μπορείτε να χρησιμοποιήσετε για να γράψετε τα δικά σας πιο σοβαρά προγράμματα ή αναζητούσατε ακριβώς αυτές τις λειτουργίες που περιγράφονται εδώ.

Όλοι οι κωδικοί χρησιμοποιήθηκαν στο περιβάλλον προγραμματισμού Microsoft Visual Basic v6.0.

Έξοδος με επιβεβαίωση

Το πρώτο είδος προγράμματος ή συνάρτησης είναι μια έξοδος με ένα μήνυμα που επιβεβαιώνει την έξοδο. Γενικά, ανοίξτε το περιβάλλον προγραμματισμού της Visual Basic, δημιουργήστε ένα τυπικό έργο, μετά τοποθετήστε ένα κουμπί στη φόρμα, κάντε κλικ στο κουμπί και θα ανοίξει ένα παράθυρο επεξεργασίας κώδικα και πρέπει να εισαγάγετε τον ακόλουθο κώδικα εκεί:

Μήνυμα ηχητικής φωτεινότητας ως κουμπιά σκοτεινής συμβολοσειράς, καθώς και εικονίδια ως ακέραιος αριθμός αμυδρός τίτλος Ως απόκριση αμυδρή συμβολοσειρά Ως μήνυμα συμβολοσειράς = "Θέλετε να βγείτε;"" buttonasicons = vbYesNo + vbQuestion response = MsgBox(message, buttonasicons, title) If response = vbYes Then End End If !}

τίτλος = "Έξοδος

Κωδικός πρόσβασης για την έναρξη του προγράμματος<>Dim Password, Pword PassWord = "12345" Pword = InputBox("Εισαγωγή κωδικού πρόσβασης") Εάν Pword

PassWord Στη συνέχεια MsgBox "Ο κωδικός πρόσβασης δεν είναι σωστός" Τέλος Τέλος Εάν

Όπου, 12345 είναι ο κωδικός πρόσβασης για την έναρξη του προγράμματος. Αλλά αυτός ο κωδικός μπορεί να χρησιμοποιηθεί όπου θέλετε.

Έξοδος μηνύματος

Εάν θέλετε απλώς να εμφανίσετε ένα μήνυμα για κάτι, επικολλήστε αυτό:" buttonasicons = vbOKOnly + vbexciamation MsgBox message, buttonsandicons, title !}

Beep Dim message As String Dim buttonsandicons As Integer Dim title As String message = "Message" title = "Message

Σχέδιο στη φόρμα

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 As Integer, Shift as Integer, X as Single, Y As Single) If Button = 1 then Line (Form1.CurrentX, Form1.CurrentY)-(X, Y), QBCcolor(0) End If End Sub

Μπορείτε να αλλάξετε το χρώμα χρησιμοποιώντας την παράμετρο QBColor(0), π.χ. Αντί για 0, βάλε έναν άλλο αριθμό.

Επανεκκίνηση του υπολογιστή

Για να επανεκκινήσετε τον υπολογιστή σας: τοποθετήστε το κουμπί και επικολλήστε τον ακόλουθο κώδικα:

Dim strComputer As String strComputer = "."

Ρύθμιση objWMIService = GetObject("winmgmts:" & "(impersonationLevel=impersonate, (Shutdown))!\\" _ & strComputer & "\root\cimv2") Ρύθμιση colOperatingSystems = objWMIService.ExecQuery *perating(3_Sstemel)" Κάθε ObjOperatingSystem In colOperatingSystems ObjOperatingSystem.Reboot " Για επανεκκίνηση Επόμενο

Private Sub Form_Load() Εάν App.PrevInstance = True Τότε MsgBox "Το έργο έχει ήδη ξεκινήσει!"

Τέλος Τέλος Αν

Απενεργοποίηση του υπολογιστή

Για να απενεργοποιήσετε τον υπολογιστή σας, μπορείτε να χρησιμοποιήσετε τον ακόλουθο κωδικό:

Dim strComputer As String strComputer = "."

Ρύθμιση objWMIService = GetObject("winmgmts:" & "(impersonationLevel=impersonate,(Shutdown))!\\" _ & strComputer & "\root\cimv2") Ορισμός colOperatingSystems = objWMIService.ExecQuery *perating(3y_Steel") Κάθε ObjOperatingSystem In colOperatingSystems ObjOperatingSystem.ShutDown "Για τερματισμό λειτουργίας Επόμενο

Τερματισμός οποιασδήποτε διαδικασίας

Για να τερματίσετε τη διαδικασία μπορείτε να χρησιμοποιήσετε τον ακόλουθο κώδικα:

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

Όπου, αντί για ICQlite.exe μπορεί να υπάρχει οποιαδήποτε διαδικασία. Πόσο διαρκεί ο υπολογιστής;Παρακάτω είναι ένα παράδειγμα για το πώς μπορείτε να προσδιορίσετε το χρόνο λειτουργίας του υπολογιστή.

Αυτή η μέθοδος

βασίζεται στη χρήση της βιβλιοθήκης kernel32, οπότε στην αρχή του κώδικα φόρμας, συνδέστε αυτό το DLL. Ιδιωτική Δήλωση Συνάρτηση GetTickCount Lib "kernel32" () Όσο "Και στον κωδικό του κουμπιού: Dim a_hour, a_minute, a_second a = Format(GetTickCount() / 1000, "0") "total seconds a_days = Int(a / 8640) a = a - a_days * 86400 a_hour = Int(a / 3600) a = a - a_hour * 3600 a_minute = Int(a / 60) a_second = a - a_minute * 60 MsgBox "Ο υπολογιστής σας εκτελείται" & Str(a_days) & " ημέρες " & Str(a_hour) _ & " ώρες " & Str(a_minute) & " minutes" & Str(a_hour) & " seconds"Έχουμε αναθεωρήσει

απλές λειτουργίες

, το οποίο μπορεί να χρησιμοποιηθεί σχεδόν οπουδήποτε. Τώρα ας δούμε πιο σοβαρά παραδείγματα και μπορούν να σας βοηθήσουν πολύ να γράψετε τα μεγάλα έργα σας.

Παραδείγματα εργασίας με φακέλους

Διαγραφή καταλόγου

Ιδιωτική δήλωση συνάρτησης RemoveDirectory& Lib _ "kernel32" Ψευδώνυμο "RemoveDirectoryA" (ByVal lpPathName As String) "Αφαίρεση καταλόγου (κενός!) PathName$ = "D:\t" κωδικός& = RemoveDirectory(PathName=0) κατάργηση καταλόγου Else "Ο κατάλογος διαγράφηκε Τέλος Εάν<>Δημιουργία καταλόγου

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)

":" Και Dir$(path, vbDirectory) = "" Τότε MkDir διαδρομή End If Loop Μέχρι i >= Len(dirname) End Sub Private Sub Command1_Click() Call MakeDir("C:\Soft\1\2\3\ ") Τέλος Υπ

Στατική εκτέλεση ως Boolean Dim AllDirs ως νέα συλλογή Dim next_dir Ως ακέραιος Dim dir_name Ως String Dim sub_dir Ως String Dim i Ως ακέραιος Dim txt Ως συμβολοσειρά Αν εκτελείται Στη συνέχεια τρέχει = False CmdStart.Enabled = False CmdStart.Caption = "Διακοπή" Else 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 On Error Resume Next If GetAttr(sub_dir) And vbDirectory then AllDirs.Add sub_dir End If sub_dir = Dir$(, vbDirectory) Επανάληψη DoEvents Εάν δεν εκτελείται, Έξοδος Do Loop txt = "" Για i = 1 To AllDirs.Count txt = txt & AllDirs(i) & vbCrLf Επόμενο i OutText.Text = txt MousePointer = vbDefault unning = False End

Τώρα ξεκινάμε το πρόγραμμα, γράφουμε στο πεδίο κειμένου StartText: C:\windows και κάνουμε κλικ στο κουμπί.

Μέγεθος καταλόγου

Const MAX_PATH = 260 Ιδιωτικός Τύπος FILETIME dwLowDateTime As Long dwHighDateTime As Long Τύπος Ιδιωτικός τύπος WIN32_FIND_DATA dwFileAttributes Όσο ftCreationTime ως FILETIME ftLastTIMEleWritimeLast Long nFileSizeLow As Long dwReserved0 Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14 Τέλος Τύπος Private Declare Function FindFirstFile Lib _ "kernel32" Ψευδώνυμο "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) Ως Long Private Declare Function Lin hFindFile As Long , ileata ως win32_find_data) ως μακρά ιδιωτική συνάρτηση δηλώσεων Findclose lib _ "kernel32" (byval hfindfile όσο μακρύς) ως μακρύ μέγεθος της λειτουργίας (byval dirpath ως string) ως διπλό dim hfind ως μακρύ dim fdata ως win32_find_data dim dblsize ως sname όπως το Sname όπως και String Dim x As Long On Error Resume Next x = GetAttr(DirPath) Αν Σφάλμα Τότε SizeOf = 0: Συνάρτηση εξόδου Αν (x And vbDirectory) = vbDirectory Στη συνέχεια dblSize = 0 Err.Clear sName = Dir$(EndSlash(DirPath) & " *.* ", vbSystem Ή vbHidden Ή vbDirectory) Εάν Err.Number = 0 Τότε hFind = FindFirstFile(EndSlash(DirPath) & "*.*", fdata) Εάν hFind = 0 Τότε Έξοδος Συνάρτηση Do If (fdata.dwFileAttributes And ) = vbDirectory Στη συνέχεια sName = Left$(fdata.cFileName, InStr(fdata.cFileName, vbNullChar) - 1) Εάν sName<>"." Και sName<>".." Τότε dblSize = dblSize + SizeOf(EndSlash(DirPath) & sName) End If Else dblSize = dblSize + fdata.nFileSizeHigh * 65536 + fdata.nFileSizeLow End If DoEvents Loop whileFindN,<>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) = " Τότε EndSlash = PathIn Else EndSlash = PathIn & "\" End If End Function Private Sub Form_Load() "Αντικαταστήστε το "D:\soft" με τον κατάλογο του οποίου το μέγεθος θέλετε να γνωρίζετε MsgBox SizeOf("D:\soft") / 1000000 End Sub

Παραδείγματα εργασίας με αρχεία

Αντίγραφο

Ας υποθέσουμε ότι έχουμε ένα αρχείο με το όνομα 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) Ως Longd "1_CComment FileMan" (1_C Subscription) στο D :\1.txt retval As Long "Return value "Αντιγράψτε το αρχείο retval = CopyFile("C:\1.txt", "D:\1.txt", 1) Εάν retval = 0 Τότε "Αν. σφάλμα MsgBox "Δεν μπορώ να αντιγράψω" Αλλιώς "Εάν όλα είναι καλά MsgBox "Το αρχείο αντιγράφηκε." End If End Sub

Μετακίνηση

Για παράδειγμα, θέλουμε να διαγράψουμε το αρχείο 1.txt από τη ρίζα της μονάδας δίσκου C:\

Kill("C:\1.txt")

Μέθοδος API

Private Declare Function DeleteFile Lib _ "kernel32.dll" Ψευδώνυμο "DeleteFileA" (ByVal lpFileName As String) As Long Private Sub Command1_Click() "Διαγραφή αρχείου C:\Samples\anyfile.txt Dim retvaln As Long " DeleteFile( "C:\1.txt") Εάν retval = 1 Τότε MsgBox "Το αρχείο διαγράφηκε επιτυχώς."

End Sub

Κίνηση

Μπορείτε, για παράδειγμα, να το μετακινήσετε ως εξής:

Αντιγραφή αρχείου "C:\1.txt","C:\2\1.txt" Kill ("C:\1.txt")

Αλλά είναι καλύτερα έτσι (μέσω API):

Ιδιωτική δήλωση συνάρτησης MoveFile Lib _ "kernel32.dll" Ψευδώνυμο "MoveFileA" _ (ByVal lpExistingFileName ως συμβολοσειρά, ByVal lpNewFileName ως συμβολοσειρά) As Long Private Sub Command1_Click() Dim retvalle ως τιμή \1 .txt", "C:\2\1.txt") Εάν η επανάληψη = 1 Τότε MsgBox "Μεταφέρθηκε με επιτυχία" Άλλο MsgBox "Σφάλμα" End If End Sub

Μετονομασία

Για να μετονομάσετε το αρχείο 1.txt που βρίσκεται στο C:\ σε 2.txt, μπορείτε να χρησιμοποιήσετε τον ακόλουθο κώδικα:

Μέθοδος API

Ιδιωτικό Δήλωση συνάρτησης MoveFile Lib _ "kernel32.dll" Ψευδώνυμο "MoveFileA" _ (ByVal lpExistingFileName ως συμβολοσειρά, ByVal lpNewFileName ως συμβολοσειρά) As Long Private Sub Command1_Click() Dim "MoveFileRetval As" \1 .txt", "C:\2.txt") Αν επανάληψη = 1 Τότε MsgBox "Success" Άλλο MsgBox "Error" End If End Sub

Προσδιορίστε το μέγεθος του αρχείου

Το μέγεθος του αρχείου μπορεί να προσδιοριστεί με δύο τρόπους:

Εάν το αρχείο μπορεί να ανοίξει με τη λειτουργία OPEN, τότε μπορείτε να χρησιμοποιήσετε τη συνάρτηση LOF

Dim FileFree As Integer Dim FileSize As Long FileFree = FreeFile Άνοιγμα "C:\WIN\GENERAL.TXT" για εισαγωγή ως FileFree FileSize = LOF(FileFree) Κλείσιμο FileFree

Ή χρησιμοποιήστε τη συνάρτηση FileLen

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

Απόκρυψη ρολογιού μέσω προγραμματισμού

Προσθέστε 2 κουμπιά και επικολλήστε τον κωδικό:

Επιλογή Ρητή Ιδιωτική Δήλωση Συνάρτησης FindWindow Lib _ "user32" Ψευδώνυμο "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function FindWindowEx Lib _ "WindowEx Lib _ "downEFixAnd" 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 Longmandm 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, "FindingWW",(TrayNobndify) hnd, 0, "TrayClockWClass", vbNullString) Command1.Caption = "Hide clock" Command2.Caption = "Show clock" End Sub

Προσθήκη εικονιδίου δίσκου

Προσθέστε μια ενότητα και επικολλήστε τον κώδικα σε αυτήν:

Δηλώστε τη συνάρτηση Shell_NotifyIconA Lib _ "SHELL32" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) ως ακέραιος δημόσια Const NIM_ADD = 0 Public Const NIM_MODIFY = 1 Public Const NIM_DELETE = 1_M Public Const _ΣΥΜΒΟΥΛΗ = 4 Πληκτρολογήστε NOTIFYICONDATA cbΜέγεθος για όσο διάστημα hWnd για όσο διάστημα uID Όσο μήκος uΣημαίες για μεγάλο χρονικό διάστημα uCallbackΜήνυμα για μεγάλο χρονικό διάστημα hIcon Όσο μήκος szΣυμβουλή ως συμβολοσειρά * 64 Τύπος τέλους δημόσιας λειτουργίας SetTrayIcon (Λειτουργία για όσο χρονικό διάστημα, hWnd για όσο διάστημα, hWnd για μεγάλο χρονικό διάστημα, μακροσκελής διάμετρος εικονιδίου) nidTemp As NOTIFYICONDATA nidTemp.cbSize = Len(nidTemp) nidTemp.hWnd = hWnd nidTemp.uID = 0& nidTemp.uFlags = NIF_ICON Ή NIF_TIP nidTemp.uCallbackMessage.ip.hde = tip & Chr$( 0) SetTrayIcon = Shell_NotifyIconA(Mode, nidTemp) End Function

Για χρήση, εισαγάγετε στον κωδικό φόρμας:

Private Sub Form_Load() SetTrayIcon NIM_ADD, Me.hWnd, Me.Icon, "Test" End Sub "Για να διαγράψετε μια Private Sub Command1_Click() SetTrayIcon NIM_DELETE, Me.hWnd, 0&, "" End Sub

Μπλοκάρισμα του κουμπιού εκκίνησης

Ιδιωτική Δήλωση Συνάρτηση FindWindow Lib "user32" Ψευδώνυμο "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function FindWindowEx Lib "user32" σε _Bh"Vxal" hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Δηλώστε τη συνάρτηση EnableWindow Lib "user32" _ (ByVal hwnd As Long, ByVal fEnable As Long) As Long Public Sub EnableStartButtonAs) lHwnd As Long " find hWnd lHwnd& = FindWindowEx(FindWindow("Shell_TrayWnd", ""), 0&, "Button", vbNullString) Κλήση EnableWindow(lHwnd&, CLng(Enabled)) End Sub Private "STARTS Button"(Button) είναι απενεργοποιημένο End Sub Private Sub Command2_Click() EnableStartButton True "Το κουμπί START δεν είναι απενεργοποιημένο End Sub

Ανάγνωση παραμέτρων από το αρχείο INI

Το πρόγραμμα συνδέεται με FTP και το αρχείο ini περιέχει τις παραμέτρους - διακομιστής, σύνδεση, θύρα, κωδικός πρόσβασης.

Πρώτα, δημιουργήστε ένα αρχείο INI:

Όνομα διακομιστή=χρήστης διακομιστήn=Είσοδος pwd=θύρα κωδικού πρόσβασης=θύρα

Πρέπει να τοποθετηθεί στο φάκελο του προγράμματος. Στη συνέχεια, εισαγάγετε στη μονάδα:

Private Declare Function WritePrivateProfileString Lib _ "kernel32" Ψευδώνυμο "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, _ ByVal lpString As String, ByVal rivateProfileString Lib _ Ψευδώνυμο "kernel32". ​"GetP rivateProfileStringA" (ByVal lpApplicationName ως συμβολοσειρά, ByVal lpKeyName ως συμβολοσειρά, _ ByVal lpDefault ως συμβολοσειρά, ByVal lpReturnedString ως συμβολοσειρά, _ ByVal nSize As Long, ByVal, String As LongRing , Param) Ως String ReadIni = GetValue (Razdel, Param, App.Path & "\test.ini", "0") Τελική συνάρτηση Ιδιωτική συνάρτηση GetValue(Ενότητα ByVal ως συμβολοσειρά, _ ByVal κλειδί ως συμβολοσειρά, ByVal fFileName ως συμβολοσειρά, Προαιρετική ByVal DefaultValue Ως String = vbNullString) Ως String Dim Data Ως String Data = String$(1000, Chr$(0)) If 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" alias "InternetOpena" (Byval Sagent ως String, Byval Naccesstype όσο μακρύς, byval sproxyname ως string, _ byval sproxybypass ως συμβολοσειρά, byval nflags ως μακρύ ιδιωτικό internet Lib _ "wininet.dll" Ψευδώνυμο "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName ως συμβολοσειρά, _ ByVal nServerPort ως ακέραιος, ByVal sUserName As String, ByVal sPassword As Long ng , ByVal dwContext As Long) As Long Private Δήλωση συνάρτησης FtpPutFile Lib _ "wininet.dll" Ψευδώνυμο "FtpPutFileA" (ByVal hFtpSession As Long, ByVal lpszLocalFile As String, _ ByVal.Val al dwContext As Long) Ως Boolean Private Declare Function FtpGetFile Lib _ "wininet.dll" Ψευδώνυμο "FtpGetFileA" (ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, _ ByVal lpszNewFile As Fwgsail ndAttributes As Long, _ ByVal dwFlags As Long, ByVal d wContext As Long ) As Boolean Private Δήλωση συνάρτησης InternetCloseHandle Lib _ "wininet.dll" (ByVal hInet As Long) As Integer Dim rc& Dim rs&

Και στον κωδικό του κουμπιού:

rc& = InternetOpen("", 0, vbNullString, vbNullString, 0) rs& = InternetConnect(rc&, ReadIni("General", "servername"), "0", _ ReadIni("General", "usern"), ReadIni( "General", "pwd"), 1, 0, 0) Εάν FtpGetFile(rs&, "Your file.txt", "path where", False, 0, 1, 0) = False, Στη συνέχεια, τερματισμός κλήσης InternetCloseHandle(rs&) Call InternetCloseHandle(rc&)

Λίστα εκτελούμενων διαδικασιών

Προσθέστε ένα πλαίσιο λίστας και κουμπί 1, εισαγάγετε τον ακόλουθο κώδικα:

Επιλογή Ρητή Ιδιωτική Δήλωση Συνάρτησης CreateToolhelpSnapshot Lib _ "Kernel32" Ψευδώνυμο "CreateToolhelp32Snapshot" _ (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Private Declare Function "Alish‎First" al hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Δήλωση συνάρτησης ProcessNext Lib _ "Kernel32" Ψευδώνυμο "Process32Next" _ (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Sub "KloseHand Lih" ) 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 LongTh32Thre rentProcessID As Long pcPriClassBase As Long dwΣημαίες για όσο διάστημα szExeFile Ως συμβολοσειρά * MAX_PATH Τύπος Τύπος DI M HSNAPSHOT ως μακρύ Dim Uprocess ως ProcessEntry32 Dim R ως Long Private Sub Command1_click () List1.Clear HsnapShot = LEDETOOLPHELPSNAPSHOT (TH32CS_SNACPOCES ProcessFirst(hSnapShot, uProcess) Do while r List1.AddItem uProcess.szExeFile r = ProcessNext(hSnapShot, uProcess) Loop Call CloseHandle(hSnapShot) End Sub

Θέση προγράμματος σε εκκίνηση

Για να φορτώσει το πρόγραμμα με τα Windows, όπως ορισμένα άλλα προγράμματα, μπορείτε να χρησιμοποιήσετε το μητρώο:

Προσθέστε 2 κουμπιά και τον ακόλουθο κώδικα:

Private Sub Command1_Click() "Registry entry 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() "Delete from the registry Set Reg = CreateObject("WScript.Shell") Reg.RegDelete "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\Name of your program" End Sub

Και για να φορτώσει το πρόγραμμα μαζί με τα Windows, ακόμα και μέσα ασφαλής λειτουργία, τότε αυτός ο κωδικός:

Πρώτον, μια πιο σοβαρή μέθοδος (κάντε το για παν ενδεχόμενο αντίγραφο ασφαλείαςαρχείο).

Private Sub Command1_Click() Set Reg = CreateObject("WScript.Shell") Reg.RegΓράψτε "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell", _ "Διαδρομή στο πρόγραμμα σας Private"(Endman) Αυτό είναι για ανάκτηση Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Shell", _ "Explorer.exe," End Sub

Λοιπόν, ένας απλός τρόπος.

Private Sub Command1_Click() Set Reg = CreateObject("WScript.Shell") Reg.RegΓράψτε "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit", _ "C:\\\\System" ,Η διαδρομή προς το πρόγραμμά σας" End Sub Private Sub Command2_Click()"Για επαναφορά του Set Reg = CreateObject("WScript.Shell") Reg.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\User_Winiton", : \\WINDOWS\\system32\\userinit.exe," End Sub

Απόκρυψη της γραμμής εργασιών

Προσθέστε 2 κουμπιά και επικολλήστε τον κωδικό:

Ιδιωτική Δήλωση Συνάρτηση 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 hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, _ ByVal cx As Long, ByVal cy As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, _ ByVal cx As Long, ByVal cy As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, _ ByVal cx As Long, ByVal cy As Long, ByVal Long wFlangre Συνάρτηση FindWindow Lib "user32" Ψευδώνυμο "FindWindowA" _ (ByVal lpClassName ως συμβολοσειρά, ByVal lpWindowName ως συμβολοσειρά) As Long Const SWP_HIDEWINDOW = &H80 Const SWP_SHOWWINDOWide =Priva_Chdown ("Shell_traywnd", " ") Κλήση SetWindowPos(hwnd1, 0, 0, 0, 0, 0, SWP_HIDEWINDOW) End Sub "Shows Private Sub Command2_Click() hwnd1 = FindWindow("Shell_traywnd", "") Κλήση SetWind10,0,0h 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)

Πόση μνήμη RAM υπάρχει στον υπολογιστή

Προσθέστε ένα κουμπί και επικολλήστε τον ακόλουθο κώδικα:

Ιδιωτικό Δήλωση Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As TMemoryStatus) Ιδιωτικός τύπος TMemoryStatus dwLength As Long dwMemoryLoad As Long dwTotalPhys As Long dwAvailPhys As Long dwFiDWTong ual As Long dwAvailVirtual As Long End Τύπος Dim s As TMemoryStatus Private Sub Command1_Click( ) ms.dwLength = Len(ms) Κλήση GlobalMemoryStatus(ms) MsgBox "Total:" & ms.dwTotalPhys & vbCr & "Free:" _ & ms.dwAvailPhys & vbCr & "Used in %:" & ms.dwMemory

Απόκρυψη εικονιδίων επιφάνειας εργασίας

Αυτό γίνεται ως εξής. Προσθέστε 2 κουμπιά και επικολλήστε τον ακόλουθο κώδικα:

Λειτουργία ιδιωτικής δήλωσης ShowWindow& Lib "user32" (ByVal hwnd&, ByVal nCmdShow&) Συνάρτηση ιδιωτικής δήλωσης FindWindow Lib _ "user32" Ψευδώνυμο "FindWindowA" (ByVal lpClassName As String,ByVame Aslp Const SW_NORMAL = 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 LongWinWinlldown (hHandle , SW_NORMAL) End Sub

Χρησιμοποιώντας το κουμπί Command1, τα εικονίδια κρύβονται, Command2 - εμφανίζονται.

Αυτό είναι όλο για μένα, ελπίζω τα παραπάνω παραδείγματα να σας φανούν χρήσιμα, αντίο!