Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 18171|Répondre: 0

[Communication] Implémentation pure du hook C#

[Copié le lien]
Publié sur 07/02/2019 21:10:23 | | |
Implémentation pure du crochet C#

Pour implémenter des accroches système, c’est en fait très simple : il suffit d’appeler les trois API Win32.
SetWindowsHookEx est utilisé pour configurer des crochets. (Créez une carte pour vérifier les informations dont vous avez besoin)

CallNextHookEx sert à passer des hooks (les messages sont importants, donc là d’où ils viennent, ils doivent retourner là où vous voulez les bloquer)




Décrocher WindowsHookEx Désinstaller les crochets (désinstaller est très important, trop de paramètres bloqués provoquent une congestion)


L’article « HOW TO : Setting Window Hooks in Visual C# .NET » le décrit ainsi :
Les hooks globaux ne sont pas pris en charge dans le framework .NET
Vous ne pouvez pas implémenter de crochets globaux dans le framework Microsoft .NET. Pour installer un hook global, le hook doit disposer d’une exportation native de bibliothèque de liaison dynamique (DLL) afin de pouvoir être inséré dans un autre processus qui doit être appelé dans une fonction valide et cohérente. Cela nécessite une exportation DLL, qui n’est pas prise en charge par le framework .NET. Le code géré n’a pas le concept d’avoir une valeur uniforme pour les pointeurs de fonction, car ces fonctions sont des proxys construits dynamiquement.
J’ai trouvé beaucoup de code sur Internet, et la plupart contiennent une DLL C++ pour identifier la DLL contenant la sous-routine mentionnée par lpfn, ce qui semble valider cette affirmation.

Mais en réalité, ce n’est pas le cas, et le crochet global peut être implémenté en utilisant le code suivant :
IntPtr pInstance = Marshal.GetHINSTANCE( Assembly.GetExecutingAssembly(). ManifestModule ) ;
Win32API.SetWindowsHookEx( WH_MOUSE_LL,m_MouseHookProcedure, pInstance, 0 ) ;
Note : La propriété ManifestModule est une nouveauté dans le .Net Framework 2.0, donc lorsque vous utilisez encore . Dans Net Framework 1.x, vous pouvez utiliser la méthode GetModules pour obtenir tous les modules de l’assemblage actuel, puis utiliser l’un d’eux comme paramètre pour la méthode GetHINSTAN afin d’obtenir le pointeur de handle approprié.





Précédent:Délégué en Do#
Prochain:Utilisation des fonctions hook dans les compétences de programmation C# - SetWindowsHookEx
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com