Hook clavier et Souris
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

Hook clavier et Souris



  1. #1
    Ludwig1

    Hook clavier et Souris


    ------

    Bonjours tout le monde,

    Voila, dans mon application j'ai besoin d'installer un HOOK branché sur le clavier et la souris.
    Comme il faut passer par un DLL la question est:
    Quelqu'un aurait t'il des infos sur ce type de DLL ou quelqu'un aurait'il dévelopé quelque chose ?

    Merci pour vos réponses

    Cordialement
    Ludwig

    -----

  2. #2
    Spazi

    Re : Hook clavier et Souris

    Citation Envoyé par Ludwig1 Voir le message
    quelqu'un aurait'il dévelopé quelque chose ?
    Oui.

    Avez-vous une vrai question ? (je ne ferai pas le hook à votre place cependant, mais je répondrais à toutes vos interogations)

  3. #3
    Ludwig1

    Re : Hook clavier et Souris

    Citation Envoyé par Spazi Voir le message
    Oui.

    Avez-vous une vrai question ? (je ne ferai pas le hook à votre place cependant, mais je répondrais à toutes vos interogations)
    Salut,
    Merci d'avoir répondu,
    La vrai question est était de savoir si quelqu'un à un DLL tout cuit qui contient une certaines quantité de procédures
    permettant de mettre un HOOK sur le clavier et la Souris.
    Il est clair que s'il faut écrire du code faire je vais le faire.
    Mais c'est exactement cela que j'aurais aimé éviter.

    Cordialement

    Ludwig

  4. #4
    Spazi

    Re : Hook clavier et Souris

    Quelle langage ?

    Un hook en lui-même ne fait qu'une dizaine de ligne, si vous cherchez "hook global mouseproc keyproc", vous trouverez tous les exemples qu'il vous faut (et le premier lien que me donne Google est un topic où j'ai posté ?!? )

  5. A voir en vidéo sur Futura
  6. #5
    Ludwig1

    Re : Hook clavier et Souris

    Citation Envoyé par Spazi Voir le message
    Quelle langage ?

    Un hook en lui-même ne fait qu'une dizaine de ligne, si vous cherchez "hook global mouseproc keyproc", vous trouverez tous les exemples qu'il vous faut (et le premier lien que me donne Google est un topic où j'ai posté ?!? )
    Salut,

    Pour ce qui est du topic j' ai pas trouvé. Par ailleurs je ne sais pas si faire un HOOK est une solution possible pour mon problème.
    Je vais essayé d'exposer une stratégie autre que j'avais envisagée.
    D'abord le PB.

    Le PB consiste à récupérer des données sur une page web affichée via Internet explorer. Pour l'instant j'ai les deux consoles côte à côte à l'écran, celle du Browser et celle de mon application. Manuellement au travers des racoursis clavier, je lance dans le browser sélectionner tout puis copier, ce qui à pour effet de copier le texte dans le clipboard. Dans mon application j'ouvre le clipboard par programme et je récupère son contenu.
    Manuellement ceci marche parfaitement bien.
    Je peux dans mon application par programme positionner le curseur de la souris. Mais dés que je lance le mouseclick, je perd le focus, celui-ci est transféré à l'explorer. Je ne peux plus lancer des commandes de la mouse dans mon programme.
    Si je lance des commandes clavier à partir de mon application c'est le même problème.
    Alors l'idée m'est venu de faire un programme installé en tache de fond, lequel va se charger de lancer les commandes. La je ne sais pas si ma réflexion est la bonne. Comme je travaille avec des machines virtuelles, l' échange de données d'une machine vers une autre ne pose pas de pB.
    Il y a certainement dans MSDN la solution à mon problème, mais je dois dire que la recherche dans MSDN est comme chercher une aiguille dans une botte de foin.
    Cordialement
    Ludwig

  7. #6
    Tryss2

    Re : Hook clavier et Souris

    Pourquoi ne pas récupérer la page web directement?

  8. #7
    Ikhar84
    Animateur Informatique

    Re : Hook clavier et Souris

    Je ne peux comprend toujours pas le but de la manoeuvre aussi...

    Quand on veut acceder à une page web, on le fait via le protocole idoine, pas via une manipulation hasardeuse a base de simulation de cliques ...
    D'autant plus que si l'on veut copier/coller, on peut directement manipuler le presse papier (sous Windows en tout cas).

    Comme dit plus haut, pourquoi ne pas se connecter au serveur web et télécharger la page au moyen de http, et d'obtenir ainsi directement le code source ?
    Si l'on veut seulement certains éléments, on peut "filtrer" le code, etc...

    Si tu nous disais exactement ce que tu désires faire ?
    Accessoirement, les dll nécessaires aux hooks sont déjàs fournies par le système (ce qui est normal, étant un "service" de l'OS) via les APIs systèmes, pourquoi vouloir en developper (d'autant qu'il faut serieusement se mettre à la prog. système là, et bien connaître les mécanismes sous-jacents) ? Il suffit de savoir y faire appel (aux APIs).

    L'appel à ces APIs est clairement détaillé dans les liens donnés dans les précedents fils...

    *Service au sens de OS, interface de progammation, et pas serveur ou daemon etc...

    Si il faut absolument utiliser IE, et le laisser rapatrier la page, il n'y a pas mieux que piloter IE via .Net (comme dit précedemment aussi)...

    Dernier point, lorsque tu parles de "machine virtuelle", j'entends virtualisation et donc 2 (voir plus) machine distincte, dont les OS n'ont surtout pas a communiquer autrement que via la communication classique entre machines réelles distinctes, c'est le but de la virtualisation.

    Si tu parles "d'emulateur" qui sert de couche intermediaire pour "interpreter" un pseudo-code, style Java (ou Forth que je ne connais pas), il faut que le système hôte de ton appli puisse gérer ça en natif, le système hôte interragit alors avec l'OS, et je ne suis d'aucune utilité là...
    J'ai glissé Chef !

  9. #8
    Ludwig1

    Re : Hook clavier et Souris

    Salut

    Citation Envoyé par Ikhar84 Voir le message
    Je ne peux comprend toujours pas le but de la manoeuvre aussi...

    Quand on veut acceder à une page web, on le fait via le protocole idoine, pas via une manipulation hasardeuse a base de simulation de cliques ...
    D'autant plus que si l'on veut copier/coller, on peut directement manipuler le presse papier (sous Windows en tout cas).

    Comme dit plus haut, pourquoi ne pas se connecter au serveur web et télécharger la page au moyen de http, et d'obtenir ainsi directement le code source ?
    Si l'on veut seulement certains éléments, on peut "filtrer" le code, etc... ...

    D'abord merci pour avoir répondu, comme je suis un peu plus avancé dans mon applic je reviens sur le fil.
    Voila, pour récupérer le code source via http j'ai tout ce qu'il faut, ça c'est pas le PB. Le codage ne me sert à rien.
    ce dont j'ai besoin c'est les infos qui sont contenues dans les variables.

    En clair, le serveur m'expédie une somme importante de nombres qui sont rangés et affichés à l'écran dans un tableau style Ecxel par exemple.
    C'est ces nombres que je souhaite récupérer.
    Manuellement ça fonctionne bien à l'aide du copier/coller.
    Je souhaite automatiser l'affaire.

    Donc en clair,
    Dans ma machine j'ai installé un Timer qui tient lieu de top d'échantillonnage, ensuite toujours à partir de ma machine, je lance la page Web qui m'intéresse, une fois la page ouverte, je récupère le handel ( hwnd ) de cette page. A partir de la je devrai avoir la possibilité d'installer un HOOCK me semble t'il afin de piloter la Page Web par programme, c'est à dire ramasser les données via le bloc note par exemple et récupérer celles-ci pour traitement dans mon programme. Ceci marche déjà manuellement, c'est juste l'automatisation qui reste à finaliser et là je patauge encore un peu.
    Pour ce qui est des APIs systèmes ça pose aucun PB, je peux intégrer tous ce que je veux, le PB c'est de les connaîtres toutes.
    Donc je répète, ramasser du code sur un serveur ne me sert à rien. C'est les données c.a.d. les variables qui m'intéressent.

    Cordialement
    Ludwig

  10. #9
    Ikhar84
    Animateur Informatique

    Re : Hook clavier et Souris

    Franchement je comprends de moins en moins la démarche, si je veux récuperer du contenu via http, ou j'ai la main sur le serveur, et je met en forme mes données, ou mieux, je crée un service web, si je n'ai pas la main (et là probléme de droits et de copyright entre nous), je parse la page web pour en extraire mes données.

    Je ne passe pas par le navigateur, qui copie/colle dans le blocnote etc...

    Ton appli télécharge la page web et en dégage tout ce qui est inutile... point ou alors si tu as la main sur le serveur, les données sont envoyés sous le format xml par exemple, ou mieux via un service web.

    Ce sont les démarches normales et logiques.
    J'ai glissé Chef !

  11. #10
    Ludwig1

    Re : Hook clavier et Souris

    Resalut,

    Citation Envoyé par Ikhar84 Voir le message
    Franchement je comprends de moins en moins la démarche, si je veux récuperer du contenu via http, ou j'ai la main sur le serveur, et je met en forme mes données, ou mieux, je crée un service web, si je n'ai pas la main (et là probléme de droits et de copyright entre nous), je parse la page web pour en extraire mes données.

    Je ne passe pas par le navigateur, qui copie/colle dans le blocnote etc...

    Ton appli télécharge la page web et en dégage tout ce qui est inutile... point ou alors si tu as la main sur le serveur, les données sont envoyés sous le format xml par exemple, ou mieux via un service web.

    Ce sont les démarches normales et logiques.
    Le fait est que ce que je récupère dans le bloc notes est déjà filtré, c'est directement exploitable sous forme de base de données. Comme ça

    Code:
    A V AB Science  D AB / FR0010557264 ? 4,95 4,942 4,958 +0,05 +1,02% 40.827 4,948 4,90 4,89 4,98 17:14:30 R # 17:15:15
    A V AB Science  D AB / FR0010557264 ? 4,95 4,944 4,958 +0,05 +1,02% 40.827 4,948 4,90 4,89 4,98 17:14:30 R # 17:20:21
    A V AB Science  D AB / FR0010557264 ? 4,95 4,944 4,958 +0,05 +1,02% 40.827 4,948 4,90 4,89 4,98 17:14:30 R # 17:25:16
    Comme il y a 350 éléments distinct, c'est distribué dans 350 bases de données de type dynamique distinctes.
    En même temps il y a sauvegarde sur le disque dans 350 fichiers journaliers. Pour
    accéder aux éléments c'est ultra simple

    Code:
    2 Getline  Char ? Scan  6 Item SetFloat    \ Lecture ligne 2, coupe la partie à gauche du ?  retourne l'élément 6 de la partie
                                               \ droite sous forme de flotant

    Donc tous ça c'est écrit, le timing ne me laisse plus assez de temps pour tout recommencer. Ceci étant, il me semble que le clip board est aussi un moyen pour passer des données d'une application vers une autre.
    Etant donné que j'accède au Handel de la Fenêtre web, il me semble que je devrai pouvoir piloter celle-ci.
    En fait il faut commuter 4 fenêtres distinctes dans l'application Web.

    J'admet volontier que ce n'est pas tellement orthodoxe, mais c'était ce qu'il y avait de plus rapide.
    Voila donc je suis amené à faire un Hoock ou à piloter la Maus à partir de ma machine.

    Cordialement

    Ludwig

  12. #11
    bisou10

    Re : Hook clavier et Souris

    Dans l'ordre perso j'explorerais:

    1) si tu as accès au site, un service REST ou SOAP pour automatiser ta récupération
    2) wget / curl et un parseur en python (ou ce que tu veux)
    3) AutoIT qui te macrotera tes clics clics

    et enfin je tenterais peut-être le hook clavier / souris
    Dernière modification par bisou10 ; 14/05/2018 à 21h27.

  13. #12
    Ludwig1

    Re : Hook clavier et Souris

    Salut,
    Citation Envoyé par bisou10 Voir le message
    Dans l'ordre perso j'explorerais:

    1) si tu as accès au site, un service REST ou SOAP pour automatiser ta récupération
    2) wget / curl et un parseur en python (ou ce que tu veux)
    3) AutoIT qui te macrotera tes clics clics

    et enfin je tenterais peut-être le hook clavier / souris
    Malheureusement je n'ai pas accès au site,
    Pour l'instant je positionne parfaitement la Mouse sur les num de page.
    Nom : NumPage.JPG
Affichages : 112
Taille : 2,7 Ko
    Mais les fonctions de manipulation mouse-cliq ne marchent pas.
    J'avais utilisé mouse_event (MSDN) pas moyen de faire aller.
    si t'as une idée ou si quelqu'un a une idée, c'est bienvenu.

    Merci

    Cordialement
    Ludwig

  14. #13
    LeMulet

    Re : Hook clavier et Souris

    Il est possible d'écrire du code qui intercepte les messages systèmes relatifs au clavier ou à la souris, qui sont destinés à un processus particulier (une fenêtre par exemple). Par contre, c'est difficile d'obtenir quelque-chose de fiable. Le mieux, à mon avis, c'est d'utiliser le logiciel gratuit AutoIt qui a fait ses preuves depuis des années (voir le site ici :https://www.autoitscript.com/site/autoit/) Il s'agit alors d'écrire un script (un fichier texte), qui sera interprété par AUTOIT.pour faire exactement ce que ferait un agent humain face à une application visuelle. Le fin du fin c'est qu'il est alors possible de générer les scripts customisés à partir par exemple d'un visualbasic. L'avantage également c'est que AUTOIT comprend un "enregistreur de script" qui facilite l'écriture des scripts pour les débutants, le faisant à la place du codeur, simplement sur la base des déplacements de la souris, ses clics ainsi que des appuis clavier, prenant en compte les focus dans les fenêtres . Un peu comme une macro excel, que l'on peut évidemment retravailler ensuite ou prendre comme exemple pour une génération automatique par programme. Personnellement, lorsque j'utilisais cet outil, je n'employait pas le focus (je ne sais plus pour quelle raison, ca ne marchait pas bien à l'époque) mais j'insérais des temporisations suffisantes entre chaque opération de clic ou d'appui clavier.
    Bonjour, et Merci.

  15. #14
    Ludwig1

    Re : Hook clavier et Souris

    Salut,

    Citation Envoyé par LeMulet Voir le message
    Il est possible d'écrire du code qui intercepte les messages systèmes relatifs au clavier ou à la souris, qui sont destinés à un processus particulier (une fenêtre par exemple). Par contre, c'est difficile d'obtenir quelque-chose de fiable. Le mieux, à mon avis, c'est d'utiliser le logiciel gratuit AutoIt qui a fait ses preuves depuis des années (voir le site ici :https://www.autoitscript.com/site/autoit/) Il s'agit alors d'écrire un script (un fichier texte), qui sera interprété par AUTOIT.pour faire exactement ce que ferait un agent humain face à une application visuelle. Le fin du fin c'est qu'il est alors possible de générer les scripts customisés à partir par exemple d'un visualbasic. L'avantage également c'est que AUTOIT comprend un "enregistreur de script" qui facilite l'écriture des scripts pour les débutants, le faisant à la place du codeur, simplement sur la base des déplacements de la souris, ses clics ainsi que des appuis clavier, prenant en compte les focus dans les fenêtres . Un peu comme une macro excel, que l'on peut évidemment retravailler ensuite ou prendre comme exemple pour une génération automatique par programme. Personnellement, lorsque j'utilisais cet outil, je n'employait pas le focus (je ne sais plus pour quelle raison, ca ne marchait pas bien à l'époque) mais j'insérais des temporisations suffisantes entre chaque opération de clic ou d'appui clavier.
    Merci pour ta réponse,
    En fait entre temps j'ai effectivement regardé du coté d' AUTOIT c'est pas mal fait. Le pB est que je n'ai plus le temps pour me plonger dans cet outil.
    Entre temps j'ai résolu le problème, mouse_event fonctionne impecable, il faut juste faire un calcul bizare que je ne faisait pas.

    Ca donne ça:

    Code:
    CREATE XYPOS 16 /ALLOT			\ Création d'un buffer de 16 Octest pour ranger les coordonnées lues
    					\ position X Y actuelle de la Mouse.
    
    
    : LeftMouseClick  			S( --- ) \ Génère un MouseClick par programme	
    
    
    \ ######### Calculs Bizares à faire pour définir des coordOnées X Y spéciales
    \ ######### selon MicroSoft, Ce qui est dit nul part évidement. (Pour pas changer)
    \ ######### Calculs en fonction de la résolution de l'écran
    
    \ %%%%%%%  C'est un peu Age du capitaine * Vitesse du vent / poids du bateau 
    
    
    \ --- Calcul Bizare sur la coordonée  X
    
          XYPOS GetCursorPos DROP		\ On met les position x, y du curseur dans dans XYPOS
          XYPOS @  65565 * 			\ On récupère X et on multiplie par 65565 Dixit Microsoft ???
          SM_CXSCREEN GetSystemMetrics /	\ On ramasse la taille max en X ( Pixel ) de l'écran et on divise le résultat
    					\ par la taille max x en pixel.
    \ --- Calcul Bizare sur la coordonée  y
         		
          XYPOS 4 + @ 65565 * 		\ On récupère y et on multiplie par 65565 Dixit Microsoft ???
          SM_CYSCREEN GetSystemMetrics /	\ On ramasse la taille max en y ( Pixel ) de l'écran et on divise le résultat
    					\ précédent par cette taille max y en pixel.       
          2>R				\ On met le résultat des calculs sur la pile de retour ( Stockage temporaire des variables)
    
    \ --- On passe au Mous Click 
       
          MOUSEEVENTF_ABSOLUTE		S( --- flag1 )
          MOUSEEVENTF_LEFTDOWN		S( flag1 --- flag1,flag2 )
          OR				S( flag1,flag2 --- dwFlags )
          2R@				S( dwFlags--- dwflags,dx,dy, )			
          0					S( dwflags,dx,dy, --- dwflags,dx,dy,dwData )
          GetMessageExtraInfo		S( dwflags,dx,dy,dwData, --- dwflags,dx,dy,dwData,dwExtraInfo )
          			
    
          Mouse_Event			S( dwflags,dx,dy,dwData,dwExtraInfo, --- )	\ On clique
       
          100 MS				S( --- )	\ Tempo 100 ms
          
          MOUSEEVENTF_ABSOLUTE		S( --- flag1 )
          MOUSEEVENTF_LEFTUP		S( flag1 --- flag1,flag2 )
          OR
          2R>				\ On remet X Spécial et Y spécial sur la pile de données	
          0
          GetMessageExtraInfo
          Mouse_Event			\ On relache après 100 ms
       
       
    ;
    Le point clé c'était ce calcul bizare que je ne faisait pas, je mettait des coordonnées en pixel pour dx et dy or c'est pas ça du tout.
    Mais c'est dit nul part.
    Je peux aussi ramasser les infos dans une base de données et du coup à partir de cette base Fabriquer des séquences répétitives
    ( Robot )
    En fait je crois que c'est gagné.
    C'était le seul point qui coinçait encore. Mais je vais mettre à AUTOIT par la suite.

    Cordialement
    Ludwig

  16. #15
    bisou10

    Re : Hook clavier et Souris

    AutoIT est super simple d'accès. En 1h tu as résolu ton souci.
    Tu peux aussi voir Sikulix

  17. #16
    Ludwig1

    Re : Hook clavier et Souris

    Salut,
    Citation Envoyé par bisou10 Voir le message
    AutoIT est super simple d'accès. En 1h tu as résolu ton souci.
    Tu peux aussi voir Sikulix
    J'ai vu c'est bien fait, mais comme dit je ne peux plus faire marche arrière maintenant, il y a encore
    toute une cuisine avec des fenêtres en mode MDI qui viennent s'ouvrir, avec tracé automatique de courbes dans certaines,
    Affichage de base de données dans d'autres, séquences de calculs statistiques etc... Tout ça c'est fait.
    Le pilotage de la mouse était le dernier point qui coinçait.

    Mais je vais à coup sur me mettre à AutoIT dès que j'aurais fini ce projet.

    Cordialement
    Ludwig

Discussions similaires

  1. Bug de ma clé usb pour souris et clavier
    Par invitead46f742 dans le forum Matériel - Hardware
    Réponses: 2
    Dernier message: 16/02/2013, 13h32
  2. acer - plus de clavier - plus de souris
    Par invitef611fd24 dans le forum Matériel - Hardware
    Réponses: 6
    Dernier message: 16/06/2009, 20h13
  3. clavier et souris
    Par invite814dfd26 dans le forum Matériel - Hardware
    Réponses: 0
    Dernier message: 01/07/2008, 04h48
  4. plus de clavier et de souris, pc de redemarre plus
    Par invite0367c7fb dans le forum Matériel - Hardware
    Réponses: 4
    Dernier message: 25/04/2007, 18h41
  5. Souris/clavier PS2 sur port USB
    Par Papy Octet dans le forum Matériel - Hardware
    Réponses: 4
    Dernier message: 16/06/2006, 10h17