IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Principe du Hook et utilisation d'un Hook souris

Principe du Hook et utilisation d'un Hook souris


précédentsommairesuivant

V. Alternative au Hook Local

V-A. Présentation

Une alternative intéressante à la mise en place d'un Hook Local est l'utilisation de la méthode :

Application.AddMessageFilter
Sélectionnez
	Application.AddMessageFilter(value As IMessageFilter)

Il s'agit ici de poser un filtre sur les messages destinés à l'application.

Chacun de ces messages est d'abord transmis à la méthode PreFilterMessage de l'objet implémentant IMessageFilter.

V-B. Exemple

L'exemple suivant permet lors de la saisie d'un caractère compris entre A et Z de lever un événement avec comme paramètre le caractère en majuscule :

Utilisation de Application.AddMessageFilter
Sélectionnez
	Option Explicit On
	Option Strict On
	Public Class FormDemarrage
	
	    Private pf As New ExemplePreFilter
	
	    Public Sub New()
	        InitializeComponent()
	
	        Application.AddMessageFilter(pf)
	        AddHandler pf.KeyDown, AddressOf pfKeyDown
	
	    End Sub
	    Private Sub pfKeyDown(ByVal s As String)
	        Me.TextBox1.Text = Me.TextBox1.Text & s
	    End Sub
	
	    Private Sub Button1_Click(ByVal sender As System.Object, _ 
		ByVal e As System.EventArgs) Handles Button1.Click
	        Dim f As New FormDeSaisie
	        f.Show()
	    End Sub
	End Class

	Public NotInheritable Class ExemplePreFilter
	    Implements Windows.Forms.IMessageFilter
	    '
	    Public Event KeyDown(ByVal s As String)
	
	    Public Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) _
			As Boolean Implements System.Windows.Forms.IMessageFilter.PreFilterMessage
	
	        If m.Msg = &H100 Then ' WM_KEYDOWN
	            If m.WParam.ToInt32 > 64 And m.WParam.ToInt32 < 91 Then
	                RaiseEvent KeyDown(UCase(Chr(m.WParam.ToInt32)))
	            End If
	        End If
	
	        Return False
	
	    End Function
	
	End Class

L'exemple complet est disponible ici : UseApplicationPrefilter.zip


précédentsommairesuivant

Copyright © 2008 Anthony DE DECKER. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.