OVH Cloud OVH Cloud

intercepter mouseUP général

14 réponses
Avatar
seb-seb
bonjour
ce coup ci j'ai aps le choix je vais etre obligé de comprendre
il faut que j'intercepte quand on relache le clic mais n'importe et
seulement pendant un quelques secondes a partir d'un moment precis
je vous ecoute francois ng et autres zoury
merci

10 réponses

1 2
Avatar
ng
Salut,

Voici un exemple avec le bouton gauche seulement (mais tu pourras étendre
aux 3 si tu le souhaite) :

'Sur Form 1
' 1 timer nommé imerCheck, Interval = 10, Enabled = True
' Ce code :

Private Sub TimerCheck_Timer()
Call VerifBouton
End Sub

Public Sub BoutonRelache()
MsgBox "Bouton gauche relaché !"
End Sub

'Dans un module
' Ce code :

Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long)
As Integer

Public Const VK_LMOUSEBUTTON = 1
Public Const VK_RMOUSEBUTTON = 2
Public Const VK_MMOUSEBUTTON = 4

Dim bBoutonGauche As Boolean


Public Sub VerifBouton()
If bBoutonGauche And GetAsyncKeyState(VK_LMOUSEBUTTON) = 0 Then
bBoutonGauche = False
Call Form1.BoutonRelache
Else
bBoutonGauche = Not (GetAsyncKeyState(VK_LMOUSEBUTTON) = 0)
End If
End Sub



--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

seb-seb wrote:
bonjour
ce coup ci j'ai aps le choix je vais etre obligé de comprendre
il faut que j'intercepte quand on relache le clic mais n'importe et
seulement pendant un quelques secondes a partir d'un moment precis
je vous ecoute francois ng et autres zoury
merci


Avatar
François Picalausa
Bonjour/soir,

Je ne déconseille cette solution vivement car soit, le timer a un interval
assez grand et on ne récupère pas tous les clicks, soit on a un interval
très petit ce qui provoque une charge inutile du processeur!

Dans le dernier post, il était question dans la question de le faire avec un
timer (ce qui est correct pour une vérification à un moment précis). Dans
celui ci, il faut savoir quand ce click s'est produit!

Il existe sur allapi une dll permettant le hook souris:
DSMOUSE
http://www.mentalis.org/vbexamples/list.php?category=MISC

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"ng" a écrit dans le message de
news:
Salut,

Voici un exemple avec le bouton gauche seulement (mais tu pourras
étendre aux 3 si tu le souhaite) :

'Sur Form 1
' 1 timer nommé imerCheck, Interval = 10, Enabled = True
' Ce code :

Private Sub TimerCheck_Timer()
Call VerifBouton
End Sub

Public Sub BoutonRelache()
MsgBox "Bouton gauche relaché !"
End Sub

'Dans un module
' Ce code :

Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As
Long) As Integer

Public Const VK_LMOUSEBUTTON = 1
Public Const VK_RMOUSEBUTTON = 2
Public Const VK_MMOUSEBUTTON = 4

Dim bBoutonGauche As Boolean


Public Sub VerifBouton()
If bBoutonGauche And GetAsyncKeyState(VK_LMOUSEBUTTON) = 0 Then
bBoutonGauche = False
Call Form1.BoutonRelache
Else
bBoutonGauche = Not (GetAsyncKeyState(VK_LMOUSEBUTTON) = 0)
End If
End Sub




seb-seb wrote:
bonjour
ce coup ci j'ai aps le choix je vais etre obligé de comprendre
il faut que j'intercepte quand on relache le clic mais n'importe et
seulement pendant un quelques secondes a partir d'un moment precis
je vous ecoute francois ng et autres zoury
merci




Avatar
seb-seb
décidement
moi pas comprendre encore ...
ca commence à me ...
si j'ai bien compris la solution de ng peut rater le relachement de clic
et c'est koi un hook



"François Picalausa" a écrit dans le message de
news:u%
Bonjour/soir,

Je ne déconseille cette solution vivement car soit, le timer a un interval
assez grand et on ne récupère pas tous les clicks, soit on a un interval
très petit ce qui provoque une charge inutile du processeur!

Dans le dernier post, il était question dans la question de le faire avec


un
timer (ce qui est correct pour une vérification à un moment précis). Dans
celui ci, il faut savoir quand ce click s'est produit!

Il existe sur allapi une dll permettant le hook souris:
DSMOUSE
http://www.mentalis.org/vbexamples/list.php?category=MISC

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"ng" a écrit dans le message de
news:
> Salut,
>
> Voici un exemple avec le bouton gauche seulement (mais tu pourras
> étendre aux 3 si tu le souhaite) :
>
> 'Sur Form 1
> ' 1 timer nommé imerCheck, Interval = 10, Enabled = True
> ' Ce code :
>
> Private Sub TimerCheck_Timer()
> Call VerifBouton
> End Sub
>
> Public Sub BoutonRelache()
> MsgBox "Bouton gauche relaché !"
> End Sub
>
> 'Dans un module
> ' Ce code :
>
> Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As
> Long) As Integer
>
> Public Const VK_LMOUSEBUTTON = 1
> Public Const VK_RMOUSEBUTTON = 2
> Public Const VK_MMOUSEBUTTON = 4
>
> Dim bBoutonGauche As Boolean
>
>
> Public Sub VerifBouton()
> If bBoutonGauche And GetAsyncKeyState(VK_LMOUSEBUTTON) = 0 Then
> bBoutonGauche = False
> Call Form1.BoutonRelache
> Else
> bBoutonGauche = Not (GetAsyncKeyState(VK_LMOUSEBUTTON) = 0)
> End If
> End Sub
>
>
>
>
> seb-seb wrote:
>> bonjour
>> ce coup ci j'ai aps le choix je vais etre obligé de comprendre
>> il faut que j'intercepte quand on relache le clic mais n'importe et
>> seulement pendant un quelques secondes a partir d'un moment precis
>> je vous ecoute francois ng et autres zoury
>> merci




Avatar
seb-seb
et sachant que je suis pas a 200ms pres ca peut pas suffir de regarder si le
clic gauche et enfoncé ?

je vous rappelle l'utilisation :
sur une fenetre avec juste 2 lignes de boutons sur la largeur de l'ecran (un
menu en gros)
quand on mousedown sur un bouton ca appelle une procedure qui load une
fenetre avec les boutons
en rapport dedans a coté du bouton
genre menu demarrer
et quand on mouse up y faut que ca unload la fenetre

pour l'instant si mouseup sur la nouvelle fenetre ca execute une commande
si mouseup sur la form1 ou le bouton ca unload form2 sans rien faire
mais si on mouse down puis qu'on relache dans le zef (bureau, autre appli
...)
form2 reste la et ca fait moche

merci





"seb-seb" a écrit dans le message de
news:
décidement
moi pas comprendre encore ...
ca commence à me ...
si j'ai bien compris la solution de ng peut rater le relachement de clic
et c'est koi un hook



"François Picalausa" a écrit dans le message de
news:u%
> Bonjour/soir,
>
> Je ne déconseille cette solution vivement car soit, le timer a un


interval
> assez grand et on ne récupère pas tous les clicks, soit on a un interval
> très petit ce qui provoque une charge inutile du processeur!
>
> Dans le dernier post, il était question dans la question de le faire


avec
un
> timer (ce qui est correct pour une vérification à un moment précis).


Dans
> celui ci, il faut savoir quand ce click s'est produit!
>
> Il existe sur allapi une dll permettant le hook souris:
> DSMOUSE
> http://www.mentalis.org/vbexamples/list.php?category=MISC
>
> --
> François Picalausa (MVP VB)
> FAQ VB : http://faq.vb.free.fr
> MSDN : http://msdn.microsoft.com
>
>
> "ng" a écrit dans le message de
> news:
> > Salut,
> >
> > Voici un exemple avec le bouton gauche seulement (mais tu pourras
> > étendre aux 3 si tu le souhaite) :
> >
> > 'Sur Form 1
> > ' 1 timer nommé imerCheck, Interval = 10, Enabled = True
> > ' Ce code :
> >
> > Private Sub TimerCheck_Timer()
> > Call VerifBouton
> > End Sub
> >
> > Public Sub BoutonRelache()
> > MsgBox "Bouton gauche relaché !"
> > End Sub
> >
> > 'Dans un module
> > ' Ce code :
> >
> > Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As
> > Long) As Integer
> >
> > Public Const VK_LMOUSEBUTTON = 1
> > Public Const VK_RMOUSEBUTTON = 2
> > Public Const VK_MMOUSEBUTTON = 4
> >
> > Dim bBoutonGauche As Boolean
> >
> >
> > Public Sub VerifBouton()
> > If bBoutonGauche And GetAsyncKeyState(VK_LMOUSEBUTTON) = 0 Then
> > bBoutonGauche = False
> > Call Form1.BoutonRelache
> > Else
> > bBoutonGauche = Not (GetAsyncKeyState(VK_LMOUSEBUTTON) = 0)
> > End If
> > End Sub
> >
> >
> >
> >
> > seb-seb wrote:
> >> bonjour
> >> ce coup ci j'ai aps le choix je vais etre obligé de comprendre
> >> il faut que j'intercepte quand on relache le clic mais n'importe et
> >> seulement pendant un quelques secondes a partir d'un moment precis
> >> je vous ecoute francois ng et autres zoury
> >> merci
>
>




Avatar
François Picalausa
Bonjour/soir,

si j'ai bien compris la solution de ng peut rater le relachement de
clic et c'est koi un hook



On va tenter de faire simple ;-)

Supposons que le timer soit réglé à 500 ms.
Dans ce cas, on peut avoir le cas
Vérification du timer mais l'utilisateur n'as pas encore cliqué
L'utilisateur click
L'utilisateur relache le boutton
Vérification par timer, mais l'utilisateur a déjà clické, comme s'il n'y
avait pas eu de changement

La vérification fait travailler le processeur.
On peut envisager de mettre 20ms comme interval mais alors, le processeur
tournera beaucoup pour, au final, peut-être un click.

Un hook permet de recevoir les événement de la souris, du clavier, ...
directement à partir de windows soit pour toute l'application, soit pour
tout le système.
Les hook pour tout le système ne peuvent pas être implémentées en VB. il
faut donc passer par un composant tiers.
Si windows dit à VB "L'utilisateur à clické", tu es sûr de ne pas manquer
l'événement.
En plus, tu évite de vérifier à interval régulier le boutton de la souris.
Donc, la machine travaille moins pour le même résultat.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"seb-seb" a écrit dans le message de
news:
décidement
moi pas comprendre encore ...
ca commence à me ...
si j'ai bien compris la solution de ng peut rater le relachement de
clic et c'est koi un hook



"François Picalausa" a écrit dans le message de
news:u%
Bonjour/soir,

Je ne déconseille cette solution vivement car soit, le timer a un
interval assez grand et on ne récupère pas tous les clicks, soit on
a un interval très petit ce qui provoque une charge inutile du
processeur!

Dans le dernier post, il était question dans la question de le faire
avec un timer (ce qui est correct pour une vérification à un moment
précis). Dans celui ci, il faut savoir quand ce click s'est produit!

Il existe sur allapi une dll permettant le hook souris:
DSMOUSE
http://www.mentalis.org/vbexamples/list.php?category=MISC

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"ng" a écrit dans le message de
news:
Salut,

Voici un exemple avec le bouton gauche seulement (mais tu pourras
étendre aux 3 si tu le souhaite) :

'Sur Form 1
' 1 timer nommé imerCheck, Interval = 10, Enabled = True
' Ce code :

Private Sub TimerCheck_Timer()
Call VerifBouton
End Sub

Public Sub BoutonRelache()
MsgBox "Bouton gauche relaché !"
End Sub

'Dans un module
' Ce code :

Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As
Long) As Integer

Public Const VK_LMOUSEBUTTON = 1
Public Const VK_RMOUSEBUTTON = 2
Public Const VK_MMOUSEBUTTON = 4

Dim bBoutonGauche As Boolean


Public Sub VerifBouton()
If bBoutonGauche And GetAsyncKeyState(VK_LMOUSEBUTTON) = 0 Then
bBoutonGauche = False
Call Form1.BoutonRelache
Else
bBoutonGauche = Not (GetAsyncKeyState(VK_LMOUSEBUTTON) = 0)
End If
End Sub




seb-seb wrote:
bonjour
ce coup ci j'ai aps le choix je vais etre obligé de comprendre
il faut que j'intercepte quand on relache le clic mais n'importe et
seulement pendant un quelques secondes a partir d'un moment precis
je vous ecoute francois ng et autres zoury
merci








Avatar
seb-seb
oui mais moi le timer je peux le declancher quand je clic sur le bouton
je veux juste savoir s'il a relaché et pas forcement immediatement

et si le gars relache le clic sur le bureau en ayant enfoncé le clic sur mon
appli
c'est un hook de l'appli ou de windows ?


"François Picalausa" a écrit dans le message de
news:
Bonjour/soir,

> si j'ai bien compris la solution de ng peut rater le relachement de
> clic et c'est koi un hook

On va tenter de faire simple ;-)

Supposons que le timer soit réglé à 500 ms.
Dans ce cas, on peut avoir le cas
Vérification du timer mais l'utilisateur n'as pas encore cliqué
L'utilisateur click
L'utilisateur relache le boutton
Vérification par timer, mais l'utilisateur a déjà clické, comme s'il n'y
avait pas eu de changement

La vérification fait travailler le processeur.
On peut envisager de mettre 20ms comme interval mais alors, le processeur
tournera beaucoup pour, au final, peut-être un click.

Un hook permet de recevoir les événement de la souris, du clavier, ...
directement à partir de windows soit pour toute l'application, soit pour
tout le système.
Les hook pour tout le système ne peuvent pas être implémentées en VB. il
faut donc passer par un composant tiers.
Si windows dit à VB "L'utilisateur à clické", tu es sûr de ne pas manquer
l'événement.
En plus, tu évite de vérifier à interval régulier le boutton de la souris.
Donc, la machine travaille moins pour le même résultat.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"seb-seb" a écrit dans le message de
news:
> décidement
> moi pas comprendre encore ...
> ca commence à me ...
> si j'ai bien compris la solution de ng peut rater le relachement de
> clic et c'est koi un hook
>
>
>
> "François Picalausa" a écrit dans le message de
> news:u%
>> Bonjour/soir,
>>
>> Je ne déconseille cette solution vivement car soit, le timer a un
>> interval assez grand et on ne récupère pas tous les clicks, soit on
>> a un interval très petit ce qui provoque une charge inutile du
>> processeur!
>>
>> Dans le dernier post, il était question dans la question de le faire
>> avec un timer (ce qui est correct pour une vérification à un moment
>> précis). Dans celui ci, il faut savoir quand ce click s'est produit!
>>
>> Il existe sur allapi une dll permettant le hook souris:
>> DSMOUSE
>> http://www.mentalis.org/vbexamples/list.php?category=MISC
>>
>> --
>> François Picalausa (MVP VB)
>> FAQ VB : http://faq.vb.free.fr
>> MSDN : http://msdn.microsoft.com
>>
>>
>> "ng" a écrit dans le message de
>> news:
>>> Salut,
>>>
>>> Voici un exemple avec le bouton gauche seulement (mais tu pourras
>>> étendre aux 3 si tu le souhaite) :
>>>
>>> 'Sur Form 1
>>> ' 1 timer nommé imerCheck, Interval = 10, Enabled = True
>>> ' Ce code :
>>>
>>> Private Sub TimerCheck_Timer()
>>> Call VerifBouton
>>> End Sub
>>>
>>> Public Sub BoutonRelache()
>>> MsgBox "Bouton gauche relaché !"
>>> End Sub
>>>
>>> 'Dans un module
>>> ' Ce code :
>>>
>>> Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As
>>> Long) As Integer
>>>
>>> Public Const VK_LMOUSEBUTTON = 1
>>> Public Const VK_RMOUSEBUTTON = 2
>>> Public Const VK_MMOUSEBUTTON = 4
>>>
>>> Dim bBoutonGauche As Boolean
>>>
>>>
>>> Public Sub VerifBouton()
>>> If bBoutonGauche And GetAsyncKeyState(VK_LMOUSEBUTTON) = 0 Then
>>> bBoutonGauche = False
>>> Call Form1.BoutonRelache
>>> Else
>>> bBoutonGauche = Not (GetAsyncKeyState(VK_LMOUSEBUTTON) = 0)
>>> End If
>>> End Sub
>>>
>>>
>>>
>>>
>>> seb-seb wrote:
>>>> bonjour
>>>> ce coup ci j'ai aps le choix je vais etre obligé de comprendre
>>>> il faut que j'intercepte quand on relache le clic mais n'importe et
>>>> seulement pendant un quelques secondes a partir d'un moment precis
>>>> je vous ecoute francois ng et autres zoury
>>>> merci




Avatar
ng
Oula :-) Pourquoi ne pourrais-tu pas récupérer le mouseup d'une form, car ca
se passe sur ton appli non ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

seb-seb wrote:
et sachant que je suis pas a 200ms pres ca peut pas suffir de
regarder si le clic gauche et enfoncé ?

je vous rappelle l'utilisation :
sur une fenetre avec juste 2 lignes de boutons sur la largeur de
l'ecran (un menu en gros)
quand on mousedown sur un bouton ca appelle une procedure qui load une
fenetre avec les boutons
en rapport dedans a coté du bouton
genre menu demarrer
et quand on mouse up y faut que ca unload la fenetre

pour l'instant si mouseup sur la nouvelle fenetre ca execute une
commande si mouseup sur la form1 ou le bouton ca unload form2 sans
rien faire
mais si on mouse down puis qu'on relache dans le zef (bureau, autre
appli ...)
form2 reste la et ca fait moche

merci





"seb-seb" a écrit dans le message de
news:
décidement
moi pas comprendre encore ...
ca commence à me ...
si j'ai bien compris la solution de ng peut rater le relachement de
clic et c'est koi un hook



"François Picalausa" a écrit dans le message de
news:u%
Bonjour/soir,

Je ne déconseille cette solution vivement car soit, le timer a un
interval assez grand et on ne récupère pas tous les clicks, soit on
a un interval très petit ce qui provoque une charge inutile du
processeur!

Dans le dernier post, il était question dans la question de le
faire avec un timer (ce qui est correct pour une vérification à un
moment précis). Dans celui ci, il faut savoir quand ce click s'est
produit!

Il existe sur allapi une dll permettant le hook souris:
DSMOUSE
http://www.mentalis.org/vbexamples/list.php?category=MISC

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"ng" a écrit dans le message de
news:
Salut,

Voici un exemple avec le bouton gauche seulement (mais tu pourras
étendre aux 3 si tu le souhaite) :

'Sur Form 1
' 1 timer nommé imerCheck, Interval = 10, Enabled = True
' Ce code :

Private Sub TimerCheck_Timer()
Call VerifBouton
End Sub

Public Sub BoutonRelache()
MsgBox "Bouton gauche relaché !"
End Sub

'Dans un module
' Ce code :

Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey
As Long) As Integer

Public Const VK_LMOUSEBUTTON = 1
Public Const VK_RMOUSEBUTTON = 2
Public Const VK_MMOUSEBUTTON = 4

Dim bBoutonGauche As Boolean


Public Sub VerifBouton()
If bBoutonGauche And GetAsyncKeyState(VK_LMOUSEBUTTON) = 0 Then
bBoutonGauche = False
Call Form1.BoutonRelache
Else
bBoutonGauche = Not (GetAsyncKeyState(VK_LMOUSEBUTTON) = 0)
End If
End Sub




seb-seb wrote:
bonjour
ce coup ci j'ai aps le choix je vais etre obligé de comprendre
il faut que j'intercepte quand on relache le clic mais n'importe
et seulement pendant un quelques secondes a partir d'un moment
precis je vous ecoute francois ng et autres zoury
merci










Avatar
seb-seb
et si le gars y fait mouseup surle bureau par exemple ???

"ng" a écrit dans le message de
news:
Oula :-) Pourquoi ne pourrais-tu pas récupérer le mouseup d'une form, car


ca
se passe sur ton appli non ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

seb-seb wrote:
> et sachant que je suis pas a 200ms pres ca peut pas suffir de
> regarder si le clic gauche et enfoncé ?
>
> je vous rappelle l'utilisation :
> sur une fenetre avec juste 2 lignes de boutons sur la largeur de
> l'ecran (un menu en gros)
> quand on mousedown sur un bouton ca appelle une procedure qui load une
> fenetre avec les boutons
> en rapport dedans a coté du bouton
> genre menu demarrer
> et quand on mouse up y faut que ca unload la fenetre
>
> pour l'instant si mouseup sur la nouvelle fenetre ca execute une
> commande si mouseup sur la form1 ou le bouton ca unload form2 sans
> rien faire
> mais si on mouse down puis qu'on relache dans le zef (bureau, autre
> appli ...)
> form2 reste la et ca fait moche
>
> merci
>
>
>
>
>
> "seb-seb" a écrit dans le message de
> news:
>> décidement
>> moi pas comprendre encore ...
>> ca commence à me ...
>> si j'ai bien compris la solution de ng peut rater le relachement de
>> clic et c'est koi un hook
>>
>>
>>
>> "François Picalausa" a écrit dans le message de
>> news:u%
>>> Bonjour/soir,
>>>
>>> Je ne déconseille cette solution vivement car soit, le timer a un
>>> interval assez grand et on ne récupère pas tous les clicks, soit on
>>> a un interval très petit ce qui provoque une charge inutile du
>>> processeur!
>>>
>>> Dans le dernier post, il était question dans la question de le
>>> faire avec un timer (ce qui est correct pour une vérification à un
>>> moment précis). Dans celui ci, il faut savoir quand ce click s'est
>>> produit!
>>>
>>> Il existe sur allapi une dll permettant le hook souris:
>>> DSMOUSE
>>> http://www.mentalis.org/vbexamples/list.php?category=MISC
>>>
>>> --
>>> François Picalausa (MVP VB)
>>> FAQ VB : http://faq.vb.free.fr
>>> MSDN : http://msdn.microsoft.com
>>>
>>>
>>> "ng" a écrit dans le message de
>>> news:
>>>> Salut,
>>>>
>>>> Voici un exemple avec le bouton gauche seulement (mais tu pourras
>>>> étendre aux 3 si tu le souhaite) :
>>>>
>>>> 'Sur Form 1
>>>> ' 1 timer nommé imerCheck, Interval = 10, Enabled = True
>>>> ' Ce code :
>>>>
>>>> Private Sub TimerCheck_Timer()
>>>> Call VerifBouton
>>>> End Sub
>>>>
>>>> Public Sub BoutonRelache()
>>>> MsgBox "Bouton gauche relaché !"
>>>> End Sub
>>>>
>>>> 'Dans un module
>>>> ' Ce code :
>>>>
>>>> Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey
>>>> As Long) As Integer
>>>>
>>>> Public Const VK_LMOUSEBUTTON = 1
>>>> Public Const VK_RMOUSEBUTTON = 2
>>>> Public Const VK_MMOUSEBUTTON = 4
>>>>
>>>> Dim bBoutonGauche As Boolean
>>>>
>>>>
>>>> Public Sub VerifBouton()
>>>> If bBoutonGauche And GetAsyncKeyState(VK_LMOUSEBUTTON) = 0 Then
>>>> bBoutonGauche = False
>>>> Call Form1.BoutonRelache
>>>> Else
>>>> bBoutonGauche = Not (GetAsyncKeyState(VK_LMOUSEBUTTON) = 0)
>>>> End If
>>>> End Sub
>>>>
>>>>
>>>>
>>>>
>>>> seb-seb wrote:
>>>>> bonjour
>>>>> ce coup ci j'ai aps le choix je vais etre obligé de comprendre
>>>>> il faut que j'intercepte quand on relache le clic mais n'importe
>>>>> et seulement pendant un quelques secondes a partir d'un moment
>>>>> precis je vous ecoute francois ng et autres zoury
>>>>> merci




Avatar
ng
Pourquoi ne pas utiliser Form_Deactivate ou le code que j'avais proposé
tantôt avec GetActiveWindow ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

seb-seb wrote:
et si le gars y fait mouseup surle bureau par exemple ???

"ng" a écrit dans le message de
news:
Oula :-) Pourquoi ne pourrais-tu pas récupérer le mouseup d'une
form, car ca se passe sur ton appli non ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

seb-seb wrote:
et sachant que je suis pas a 200ms pres ca peut pas suffir de
regarder si le clic gauche et enfoncé ?

je vous rappelle l'utilisation :
sur une fenetre avec juste 2 lignes de boutons sur la largeur de
l'ecran (un menu en gros)
quand on mousedown sur un bouton ca appelle une procedure qui load
une fenetre avec les boutons
en rapport dedans a coté du bouton
genre menu demarrer
et quand on mouse up y faut que ca unload la fenetre

pour l'instant si mouseup sur la nouvelle fenetre ca execute une
commande si mouseup sur la form1 ou le bouton ca unload form2 sans
rien faire
mais si on mouse down puis qu'on relache dans le zef (bureau, autre
appli ...)
form2 reste la et ca fait moche

merci





"seb-seb" a écrit dans le message de
news:
décidement
moi pas comprendre encore ...
ca commence à me ...
si j'ai bien compris la solution de ng peut rater le relachement de
clic et c'est koi un hook



"François Picalausa" a écrit dans le message
de news:u%
Bonjour/soir,

Je ne déconseille cette solution vivement car soit, le timer a un
interval assez grand et on ne récupère pas tous les clicks, soit
on a un interval très petit ce qui provoque une charge inutile du
processeur!

Dans le dernier post, il était question dans la question de le
faire avec un timer (ce qui est correct pour une vérification à un
moment précis). Dans celui ci, il faut savoir quand ce click s'est
produit!

Il existe sur allapi une dll permettant le hook souris:
DSMOUSE
http://www.mentalis.org/vbexamples/list.php?category=MISC

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"ng" a écrit dans le message de
news:
Salut,

Voici un exemple avec le bouton gauche seulement (mais tu pourras
étendre aux 3 si tu le souhaite) :

'Sur Form 1
' 1 timer nommé imerCheck, Interval = 10, Enabled = True
' Ce code :

Private Sub TimerCheck_Timer()
Call VerifBouton
End Sub

Public Sub BoutonRelache()
MsgBox "Bouton gauche relaché !"
End Sub

'Dans un module
' Ce code :

Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey
As Long) As Integer

Public Const VK_LMOUSEBUTTON = 1
Public Const VK_RMOUSEBUTTON = 2
Public Const VK_MMOUSEBUTTON = 4

Dim bBoutonGauche As Boolean


Public Sub VerifBouton()
If bBoutonGauche And GetAsyncKeyState(VK_LMOUSEBUTTON) = 0 Then
bBoutonGauche = False
Call Form1.BoutonRelache
Else
bBoutonGauche = Not (GetAsyncKeyState(VK_LMOUSEBUTTON) = 0)
End If
End Sub




seb-seb wrote:
bonjour
ce coup ci j'ai aps le choix je vais etre obligé de comprendre
il faut que j'intercepte quand on relache le clic mais n'importe
et seulement pendant un quelques secondes a partir d'un moment
precis je vous ecoute francois ng et autres zoury
merci














Avatar
François Picalausa
Bonjour/soir,

Quand le click est commencé sur une form de l'appli, le mouse up est bien
envoyé à l'appli où le click à commencé.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"seb-seb" a écrit dans le message de
news:%238xI$
et si le gars y fait mouseup surle bureau par exemple ???

"ng" a écrit dans le message de
news:
Oula :-) Pourquoi ne pourrais-tu pas récupérer le mouseup d'une
form, car ca se passe sur ton appli non ?

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

seb-seb wrote:
et sachant que je suis pas a 200ms pres ca peut pas suffir de
regarder si le clic gauche et enfoncé ?

je vous rappelle l'utilisation :
sur une fenetre avec juste 2 lignes de boutons sur la largeur de
l'ecran (un menu en gros)
quand on mousedown sur un bouton ca appelle une procedure qui load
une fenetre avec les boutons
en rapport dedans a coté du bouton
genre menu demarrer
et quand on mouse up y faut que ca unload la fenetre

pour l'instant si mouseup sur la nouvelle fenetre ca execute une
commande si mouseup sur la form1 ou le bouton ca unload form2 sans
rien faire
mais si on mouse down puis qu'on relache dans le zef (bureau, autre
appli ...)
form2 reste la et ca fait moche

merci





"seb-seb" a écrit dans le message de
news:
décidement
moi pas comprendre encore ...
ca commence à me ...
si j'ai bien compris la solution de ng peut rater le relachement de
clic et c'est koi un hook



"François Picalausa" a écrit dans le message
de news:u%
Bonjour/soir,

Je ne déconseille cette solution vivement car soit, le timer a un
interval assez grand et on ne récupère pas tous les clicks, soit
on a un interval très petit ce qui provoque une charge inutile du
processeur!

Dans le dernier post, il était question dans la question de le
faire avec un timer (ce qui est correct pour une vérification à un
moment précis). Dans celui ci, il faut savoir quand ce click s'est
produit!

Il existe sur allapi une dll permettant le hook souris:
DSMOUSE
http://www.mentalis.org/vbexamples/list.php?category=MISC

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"ng" a écrit dans le message de
news:
Salut,

Voici un exemple avec le bouton gauche seulement (mais tu pourras
étendre aux 3 si tu le souhaite) :

'Sur Form 1
' 1 timer nommé imerCheck, Interval = 10, Enabled = True
' Ce code :

Private Sub TimerCheck_Timer()
Call VerifBouton
End Sub

Public Sub BoutonRelache()
MsgBox "Bouton gauche relaché !"
End Sub

'Dans un module
' Ce code :

Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey
As Long) As Integer

Public Const VK_LMOUSEBUTTON = 1
Public Const VK_RMOUSEBUTTON = 2
Public Const VK_MMOUSEBUTTON = 4

Dim bBoutonGauche As Boolean


Public Sub VerifBouton()
If bBoutonGauche And GetAsyncKeyState(VK_LMOUSEBUTTON) = 0 Then
bBoutonGauche = False
Call Form1.BoutonRelache
Else
bBoutonGauche = Not (GetAsyncKeyState(VK_LMOUSEBUTTON) = 0)
End If
End Sub




seb-seb wrote:
bonjour
ce coup ci j'ai aps le choix je vais etre obligé de comprendre
il faut que j'intercepte quand on relache le clic mais n'importe
et seulement pendant un quelques secondes a partir d'un moment
precis je vous ecoute francois ng et autres zoury
merci














1 2