Question

Je l'ai utilisé le code fourni dans l'article suivant CodeProject dans le passé avec succès, mais il semble ne fonctionner que partiellement sur Vista / 7 (je devine à cause de l'UAC). Il travaille pour le thread en cours, mais il ne capte pas l'ensemble du système d'activité. Je l'ai essayé d'ajouter requireAdministrator dans les manifestes et signer les deux assemblées non gérés et gérés, et cela ne semble pas aider.

Utilisation des messages de fenêtre pour mettre en œuvre Crochets Système mondial en C #

Mon principal objectif est d'utiliser SetWindowsHookEx pour attraper les messages HSHELL_WINDOWCREATED et HSHELL_WINDOWDESTROYED dans l'assemblage non géré et notifier l'application C # pour qu'il puisse utiliser l'information en temps réel. Il a juste besoin essentiellement de savoir à chaque fois qu'une fenêtre est créée ou détruite dans le système.

J'ai aussi trouvé un exemple d'application qui est pur C / C ++ qui fonctionne très bien dans Vista / 7, mais je ne veux vraiment pas avoir à écrire toute l'application en C / C ++ que je préfère C #.

système large Exemple Hook qui fonctionne

Quelqu'un sait comment fixer le code dans le premier article CodeProject pour que cela fonctionne sur Vista / 7 ainsi? Ou d'autres exemples de façons que je peux le faire sans créer de minuteries et hacks similaires en C #?

Merci, Marc

Était-ce utile?

La solution

un coup d'oeil à mon programme: http://wpfklip.codeplex.com . J'ai mis en crochet shell système à l'échelle de sorte que le programme est capable d'attraper fenêtre créée, activée et ainsi de suite. Et il est écrit en c #

Autres conseils

Il y a un point clé ici si:

1) Lusid recherche un crochet de coquille. Ceux-ci ne fonctionnent pas dans .NET, pour les raisons « injection de DLL » a expliqué dans le premier article qui Lusid lié.

2) Trickster a écrit un crochet du clavier. Ceux-ci fonctionnent bien en C # (parce qu'ils sont accrochés à partir une partie des fenêtres, plutôt que d'une application spécifique, et il peut faire face à l'injection .NET).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top