Clic global 2 boutons souris,personne n'a 1 meilleure idée ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Clic global 2 boutons souris,personne n'a 1 meilleure idée ?

Message par Kwai chang caine »

Bonjour à tous

N'etant pas arrivé a trouver comment modifier la BDR pour ajouter une ligne dans le menu contextuel du bureau ou de ses icones et apparement personne ne connait la solution. :(
Je crois que c'est presque impossible d'apres ce qu'en disent les internautes des divers forums.

http://www.purebasic.fr/french/viewtopi ... c&start=15

Je cherche à faire une commande rapide, comme par exemple le clic des 2 boutons à la fois pour declencher mon appli.
J'ai trouvé quelques codes parlant des hooks globaux, mais je ne sais pas bien les adapter pour cette simple commande.

Selon vous, quel serait le code le plus simple, qui prendrait le moins de ressources pour detecter le clic des 2 boutons dans toutes les applications.

Je vous remercie
Dernière modification par Kwai chang caine le ven. 11/mai/2007 8:09, modifié 3 fois.
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Re: Hook souris global pour la detection du clic des 2 bouto

Message par minirop »

Kwai chang caine a écrit :N'etant pas arrivé a trouver comment modifier la BDR pour ajouter une ligne dans le menu contextuel du bureau ou de ses icones et apparement personne ne connait la solution. :(
Je crois que c'est presque impossible d'apres ce qu'en disent les internautes des divers forums.
c'est à dire ? rajouter une ligne sur le menu clic droit comme font les antivirus ?
Kwai chang caine a écrit :Je cherche à faire une commande rapide, comme par exemple le clic des 2 boutons à la fois pour declencher mon appli.
ou çà les deux cliques ? sur les fihciers ayant une extension précise ?
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bonjour Minirop

Je cherchais a rajouter une ligne dans le menu contextuel lorsque l'on clique sur le bureau ou a coté des fichiers ou bien sur un icone du bureau.
Apparement on peux facilement le faire sur un fichier avec ou sans extension, un repertoire mais pas quand on clique dans le vide.

Regarde mes exemples de modif de BDR

http://www.purebasic.fr/french/viewtopi ... c&start=15

Pour les deux clics c'est n'importe ou.........
Je voudrais récuperer l'evenement clic droit et clic gauche a n'importe quel endroit ou l'on clique.
En fin de compte faire un hook souris global mais au plus simple et surtout prenant le moins de ressources afin de ne pas gener les autres applications et aussi pour pouvoir tourner sur n'importe quelle machine meme pas trop rapide..
Comme l'a montré NICO et FLYPE, je crois qu'il faut obligatoirement créer une DLL afin que ça agisse en dehors de PURE

D'ailleur si on intercepte l'evenement clic souris droit (par exemple) est ce que l'interception se fait avant toute autre action ....
C'est à dire avant l'apparition du menu contextuel de window, ou bien le menu apparait et on a l'interception. :roll:

Merci de ton aide.
RV
Messages : 209
Inscription : sam. 18/nov./2006 15:16

Message par RV »

Salut Kwai Chan Cain,

je ne sais pas si ça répond entièrement à ce que tu cherches mais jette un oeil sur ce code:

Code : Tout sélectionner

If OpenWindow(0,100,100,200,100,"Essai Mouse Buttons",#PB_Window_SystemMenu)
    StickyWindow(0,1)
    HideWindow(0,1)
    
    Repeat
    
        event=WindowEvent()
    
        If GetAsyncKeyState_(#VK_RBUTTON) And GetAsyncKeyState_(#VK_LBUTTON)
            HideWindow(0,0)
        EndIf
        
    Until event=#PB_Event_CloseWindow
    
    End
EndIf
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Alors la merci beaucoup :D

C'est exactement ce que je voulais.
Hyper simple, court et ça marche partout.

J'en reviens pas, moi qui croyait que fallait des hooks etc ......
Va meme falloir que je change le titre du POST :lol:

Connaitrais tu une combine pour empecher l'apparition du menu contextuel, car meme en cliquant gauche en premier et en tenant appuyé il apparait. :?

Encore merci.
Excelente journée
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Je viens de m'apercevoir d'un truc genant...
Quand on clique gauche puis droit ça marche quand meme 8O

Il doit y avoir une memoire avec la fonction GetAsyncKeyState_

Comment la remettre à zero ???

Moi je voudrais que ça bloque que quand les 2 sont appuyé en meme temps.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

C'est bon je viens de trouver comment remettre à zéro le buffer du clic gauche.

Code : Tout sélectionner

If OpenWindow(0,100,100,200,100,"Détection Bi-Click",#PB_Window_SystemMenu) 

 HideWindow(0,1) 
    
 Repeat 
  GetAsyncKeyState_(#VK_LBUTTON)
  Event = WindowEvent() 
  Delay(1)
    
  If GetAsyncKeyState_(#VK_RBUTTON) And GetAsyncKeyState_(#VK_LBUTTON) 
   MessageRequester("Détection BiClick","Vous venez de cliquer sur les 2 boutons en meme temps",0)
  EndIf 
        
 Until event=#PB_Event_CloseWindow 
    
 End 
 
EndIf
Reste encore le probleme de désactivation du menu contextuel
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message par minirop »

Kwai chang caine a écrit :J'en reviens pas, moi qui croyait que fallait des hooks etc ......
GetAsyncKeyState est un hook ! :lol:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Aaaaah d'accord.....

Mois je croyais que les hooks c'etait avec les dll et des codes mega compliqué.

Merci pour l'info, la route est encore longue..............

Et pour le menu contextuel, t'a rien qui pourrait l'intercepter ????
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Ooouuuaaaahh j'suis super content :D

J'ai eu une idée, sans le faire expres (Normal me direz vous :) )

En cliquant droit ,puis cliquant gauche tout de suite au dessus, j'ai vu que le menu contextuel disparaissait. (Normal aussi)

Donc, j'ai éssayé de creer un code qui le fait à ma place, grace à plusieurs codes de deplacement et simulation de click , ainsi que le HOOK de RV.

Ce code s'arrette en tapant simultanément SHIFT et ESCAPE

Voila, si quelqu'un peux l'améliorer (On voit encore legerement le menu contextuel apparaitre), ou me donner son avis, il sera le tres bienvenu:

Code : Tout sélectionner

; Code de RV modifié par KCC 

Dim Pos.Point(1) 

Procedure MouseEvent(EvenementSouris.l) 
 Mem.l=GlobalAlloc_(0,8) 
 GetCursorPos_(Mem) 
 mouse_event_(EvenementSouris|#MOUSEEVENTF_ABSOLUTE,PeekL(Mem)*($FFFF/GetSystemMetrics_(0)),PeekL(Mem+4)*($FFFF/GetSystemMetrics_(1)),0,GetMessageExtraInfo_()) 
 GlobalFree_(Mem) 
EndProcedure 
    
Repeat 
 
 GetAsyncKeyState_(#VK_LBUTTON) ; Vide le buffer clic gauche 
 GetAsyncKeyState_(#VK_RBUTTON) ; Vide le buffer clic droit 
 Event = WindowEvent() 
 Delay(1) 
   
 If GetAsyncKeyState_(#VK_RBUTTON) And GetAsyncKeyState_(#VK_LBUTTON) 
  GetCursorPos_(Pos(1)) ;Mémorise la position du curseur 
  Delay(130) 
  SetCursorPos_(Pos(1)\x - 5, Pos(1)\y - 5) ; Déplace le curseur de quelques pixels au dessus pour le click gauche 
  MouseEvent($2) ; Simule le click gauche appuyé 
  MouseEvent($4) ; Simule le click gauche relaché 
  MessageRequester("Détection BiClick","Vous venez de cliquer sur les 2 boutons en meme temps",0) 
 ElseIf GetAsyncKeyState_(#VK_SHIFT) And GetAsyncKeyState_(#VK_ESCAPE)
  MessageRequester("Détection BiClick","BiClick viens de s'arretter",0) 
  End
 EndIf 
       
ForEver
   
End 
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Il y a cet exemple Context Menu Item Shell Extension example (Windows) qui permet de modifier le menu contextuel de l'explorateur.
Il est un peu hardu ...
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Merci GNOZAL

Je vais voir, mais si TOI tu y trouve "hardu"........................ :)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Je viens d'essayer et ça marche, mais que pour les menus contextuels concernant les fichiers, pas sur les repertoires et encore moins sur le bureau ou dans le "vide".

Comme je l'avais indiqué dans ce post

http://www.purebasic.fr/french/viewtopi ... 4089#64089

D'apres le "OUEB" c'est presque impossible a modifier le menu du bureau :cry:
J'suis triste....
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

J'suis triste............personne n'a une meilleure idée que la mienne, ou bien peux améliorer mon code ? :cry:
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Et cela çà ne marche pas? :lol:
http://www.1-click.jp/
Répondre