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

Άποψη: 18171|Απάντηση: 0

[Επικοινωνία] Εφαρμογή καθαρού γάντζου C#

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 7/2/2019 9:10:23 μ.μ. | | |
Εφαρμογή Pure C# Hook

Για να εφαρμόσετε άγκιστρα συστήματος, είναι στην πραγματικότητα πολύ απλό, απλώς καλέστε τα τρία Win32 API.
Το SetWindowsHookEx χρησιμοποιείται για τη ρύθμιση αγκίστρων. (Ρυθμίστε μια κάρτα για να ελέγξετε τις πληροφορίες που χρειάζεστε)

Το CallNextHookEx χρησιμοποιείται για τη μετάδοση αγκίστρων (τα μηνύματα είναι σημαντικά, επομένως από όπου προέρχονται, θα πρέπει να επιστρέψουν στο σημείο που θέλετε να τα αποκλείσετε)




UnhookWindowsHookEx Απεγκατάσταση αγκίστρων (η απεγκατάσταση είναι πολύ σημαντική, πάρα πολλές κολλημένες ρυθμίσεις θα προκαλέσουν συμφόρηση)


Το άρθρο "ΠΩΣ ΝΑ: Ρύθμιση αγκίστρων παραθύρων στο Visual C# .NET" το περιγράφει ως εξής:
Τα καθολικά άγκιστρα δεν υποστηρίζονται στο πλαίσιο .NET
Δεν μπορείτε να εφαρμόσετε καθολικά άγκιστρα στο πλαίσιο Microsoft .NET. Για να εγκαταστήσετε ένα καθολικό άγκιστρο, το άγκιστρο πρέπει να έχει μια εγγενή εξαγωγή βιβλιοθήκης δυναμικής σύνδεσης (DLL), ώστε να μπορεί να εισαχθεί σε μια άλλη διεργασία που πρέπει να κληθεί σε μια έγκυρη και συνεπή συνάρτηση. Αυτό απαιτεί εξαγωγή DLL, η οποία δεν υποστηρίζεται από το πλαίσιο .NET. Ο διαχειριζόμενος κώδικας δεν έχει την έννοια της ομοιόμορφης τιμής για τους δείκτες συναρτήσεων, επειδή αυτές οι συναρτήσεις είναι δυναμικά κατασκευασμένοι πληρεξούσιοι.
Βρήκα πολύ κώδικα στο Διαδίκτυο και οι περισσότεροι από αυτούς περιέχουν ένα C++ DLL για τον προσδιορισμό του DLL που περιέχει την υπορουτίνα που αναφέρεται από το lpfn, κάτι που φαίνεται να επικυρώνει αυτόν τον ισχυρισμό.

Αλλά στην πραγματικότητα, αυτό δεν συμβαίνει και το καθολικό άγκιστρο μπορεί να εφαρμοστεί χρησιμοποιώντας τον ακόλουθο κώδικα:
IntPtr pInstance = Marshal.GetHINSTANCE( Assembly.GetExecutingAssembly(). ManifestModule );
Win32API.SetWindowsHookEx( WH_MOUSE_LL,m_MouseHookProcedure, pInstance, 0 );
Σημείωση: Η ιδιότητα ManifestModule είναι μια νέα προσθήκη στο .Net Framework 2.0, οπότε όταν εξακολουθείτε να χρησιμοποιείτε το . Στο Net Framework 1.x, μπορείτε να χρησιμοποιήσετε τη μέθοδο GetModules για να λάβετε όλες τις λειτουργικές μονάδες της τρέχουσας διάταξης και, στη συνέχεια, να χρησιμοποιήσετε μία από αυτές ως παράμετρο στη μέθοδο GetHINSTAN για να λάβετε τον κατάλληλο δείκτη λαβής.





Προηγούμενος:Αντιπρόσωπος σε C#
Επόμενος:Χρήση συναρτήσεων αγκίστρου σε δεξιότητες προγραμματισμού C# - SetWindowsHookEx
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com