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

4 réponses

1 2
Avatar
seb-seb
et si je lache le clic sur une zone texte de ma form
c le texte, la form ou les 2 qui execute les mouse up alors ?

"François Picalausa" a écrit dans le message de
news:
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




Avatar
seb-seb
form_deactivate j'ai essayé defois ca prends pas je crois
je vais reessayer avec getactive window
enfin ptete demain :-)
merci encore a tous


"ng" a écrit dans le message de
news:
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
ng
Comme te l'a dit Francois, le MouseUp est recu par le controle ayant déjà
recu le MouseDown, donc sur le controle sur lequel tu as cliqué, même si tu
as déplacé la souris entre temps.

--
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 je lache le clic sur une zone texte de ma form
c le texte, la form ou les 2 qui execute les mouse up alors ?

"François Picalausa" a écrit dans le message de
news:
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


















Avatar
seb-seb
pourtant quand je fais mousedown sur bouton sur form1
ca affiche form2 avec les boutons dessus et quand je lache le clic sur un
bouton de
form2 c bien ce bouton de form2 qui genere l'evenement


"ng" a écrit dans le message de
news:
Comme te l'a dit Francois, le MouseUp est recu par le controle ayant déjà
recu le MouseDown, donc sur le controle sur lequel tu as cliqué, même si


tu
as déplacé la souris entre temps.

--
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 je lache le clic sur une zone texte de ma form
> c le texte, la form ou les 2 qui execute les mouse up alors ?
>
> "François Picalausa" a écrit dans le message de
> news:
>> 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