2009-05-28 9 views
2

Je voudrais utiliser la fonctionnalité de System.Windows.Forms.Application.AddMessageFilter mais mon application cible n'utilise pas Windows Forms. Cette fonctionnalité ajoute un filtre pour surveiller les messages Windows lorsqu'ils sont routés. Si quelqu'un sait comment cela fonctionne, cela ne me dérangerait pas d'écrire mon propre code pour effectuer la même fonction.AddMessageFilter sans Windows Forms?

SetWindowLong avec GWL_WNDPROC affecte uniquement les messages reçus et je souhaite affecter les messages envoyés. System.Windows.Forms.Application est statique mais l'appel de AddMessageFilter avec un IMessageFilter qui déclenche une exception ne fonctionne pas.

Répondre

2

Vous pouvez utiliser un crochet de message pour obtenir ce que vous voulez. En fait, un hook de message est bien plus puissant que IMessageFilter, car il existe d'autres types de hooks autres que des messages Windows envoyés à un handle de fenêtre. Par exemple, vous pouvez accrocher des pressions de touches à l'échelle du système ou des mouvements de la souris.

Voir cet article pour plus d'informations

http://msdn.microsoft.com/en-us/magazine/cc188966.aspx