2010-11-01 12 views
0

Je sais qu'il y a un hook dans Win32 mais je n'ai pas besoin d'accrocher tout le système et c'est bas niveau. Ce que je veux, c'est quelque chose de simple comme le framework Wordpress mais pour Winform qui me permet d'accrocher tous les événements dans ma propre application par exemple en détectant toutes les feuilles de textbox ou toutes les formes de fermeture.Une bibliothèque ou un framework de haut niveau pour connecter tous les événements de son application en C#?

Est-ce que cela existe? Est-il possible techniquement ou seulement Microsoft peut le faire dans .NET Version X.X?

+0

Pourquoi les gens votent-ils sans raison? S'ils ne connaissent pas la réponse ou si la question est trop avancée pour eux? – user310291

+0

upvoted pour égaliser pour vous. Peut-être que vous allez partager l'amour et upvote ma réponse, si vous le trouvez utile. ;-) –

Répondre

2

Jetez un oeil à ManagedSpy. C'est une application très similaire à Spy ++, mais pour les applications managées. Il est apparu dans un numéro de MSDN Magazine il y a plusieurs années. Lorsque vous exécutez ManagedSpy, vous pouvez l'attacher à un processus .Net en cours d'exécution. Il réfléchira sur les assemblages et trouvera toutes sortes d'événements (il y a une capacité de filtrage pour ne voir que certains événements), puis il s'attachera à eux et sortira leur séquence de tir.

Il y a aussi source code for ManagedSpy, donc vous pouvez voir comment ils ont fait les choses et utiliser ces idées pour construire ce dont vous avez besoin.

+0

Je savais que cela existait mais je ne me souvenais plus de ce que ça s'appelait! : D –

+0

Je m'en souviens seulement parce que le mois où ce problème est arrivé dans ma boîte aux lettres, j'avais déjà passé * beaucoup * de temps à déterminer l'ordre des événements sur certaines choses de WinForms. ManagedSpy a sauvé mes fesses ce mois-ci. –

0

Il n'y a pas de moyen facile de le faire comme je le sais. Il existe des outils externes qui peuvent aider (comme Spy ++) mais je crois qu'ils fonctionnent au niveau des messages Windows plutôt qu'au niveau des événements .NET.

Si vous avez vraiment besoin de faire ce niveau de surveillance dans votre application, vous devez inscrire des gestionnaires d'événements sur chaque objet que vous souhaitez surveiller. Vous pouvez envisager d'écrire du code qui parcourt l'arborescence de contrôle pour chaque Form et enregistrer leurs événements, ainsi vous pouvez l'exécuter au démarrage après la création des formulaires.