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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Utilisation d'un Hook sur application tierce.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2017
    Messages : 5
    Par défaut Utilisation d'un Hook sur application tierce.
    Bonjour,

    Tout d'abord, j'ai réalisé plusieurs recherches avant de venir poser ma question ici (et je me suis beaucoup aidé des tutos présent sur le site, je remercie par ailleurs toutes les personnes qui aident les gens comme nous).

    Je dois, dans le cadre de mon entreprise réaliser un logiciel qui permettra d'écouter les événements réalisés sur une application tierce. C'est à dire que si l'utilisateur clique sur un bouton, nous devons intercepter ce clique et envoyé une de nos fonctions.

    J'étais dans l'idée d'utiliser Automation (puisqu'en utilisant Spy++ / Inspect, je récupérai l'ID du bouton et je pouvais réaliser un enregistrement des événements dessus.). Il s'avère qu'Automation n'arrive pas à récupérer les données de certaines applications (suivant le langage).

    Et maintenant comme le suggère le titre de mon post, je désire utiliser un Hook (en local pour écouter une application spécifique).
    Mes raisons sont les suivantes :
    - Il marche quelque soit le langage du logiciel tiers.
    - Il permet d'écouter des événements
    - Il peut savoir dans quel Thread il se trouve
    - Il donne la position du curseur et via la position on peut deviner quel contrôleur se trouve dessous.
    - En sachant quel contrôleur se trouve en dessous, je peux exécuter du code si c'est le bon contrôleur.

    (Corrigez moi si j'ai mal compris les Hook )

    Pour se faire j'ai suivi ce lien : http://humann.developpez.com/hook/#LII-B-1.
    J'ai crée ma solution en C# dans Visual Studio mais, je n'arrive pas à voir comment exécuter l'écoute.

    J'ai essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void Form1_Load(object sender, EventArgs e)
            {
                var m_MouseHook = new MouseControler();
                m_MouseHook.GlobalHook.Start();
            }
    D'abord essayé en Local pour voir si ma souris est écoutée. L'objet est bien crée mais il ne se passe rien.

    Je pense qu'il me manque :

    - Définir l'événement à écouter (Un clique)
    - Exécuter du code lors du clique (MessageBox par exemple)

    Dois-je créé une fonction du style :
    OnMouseClicked ? Sachant que j'ai déjà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private MouseEventHandler m_onMouseClick;
    J'avais lu sur un autre forum une personne qui était passé par ce que je traverse actuellement. Il a corrigé son problème mais je ne comprend pas son passage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    m_MC = new MouseControler();
    m_MC.GlobalHook.OnMouseClick += OnMouseClicked;
    m_MC.GlobalHook.Start();
    Lui a bien rajouté .OnmouseClick += OnMouseClicked (c'est de cette fonction dont je parle, je suppose que c'est quelque chose qu'il a codé à côté pour que ce soit réaliser lors du bon événement).

    Passez une bonne journée,
    Merci

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2017
    Messages : 5
    Par défaut
    Hello,

    On m'a conseillé de passer par les API Windows (je pensais que le Hook faisait parti des API Windows... vive le titre "Débutant").

    Ou l'injection de DLL.

    Mais je ne peux pas injecter de DLL sur le poste client.

    Imaginez une caissière qui appuie sur "Espèces", c'est cette action là que je souhaite "écouter" / "recevoir" pour ensuite envoyer ma fonction.

    La meilleure des façon selon-vous ?

  3. #3
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    C'est pourtant très clair la portion de code que tu mentionnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    m_MC = new MouseControler();
    m_MC.GlobalHook.OnMouseClick += OnMouseClicked;
    m_MC.GlobalHook.Start();
    ---> Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_MC.GlobalHook.OnMouseClick += OnMouseClicked;
    Corresponds à l'abonnement à un évènement, il faut donc identifier la signature de ce dernier et créer la méthode qui devra être déclenchée. Je te suggère de revoir des cours C# avant de poursuivre ....

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2017
    Messages : 5
    Par défaut
    Merci pour la réponse

    Ce n'est plus "revoir" mais voir des cours. On est sorti du BTS sans avoir vu les événements *youpi*.

    J'avais compris qu'on s'abonne à l'événement. Mais par signature tu veux parler des paramètres etc ? Je dois donc ré-écrire un événement OnMouseClicked ? avec Sender et Event ?

    Bonne soirée

    PS : à vrai dire il y a plein de chose qui me choque comme le fait qu'il tapait simplement m_MouseHook = ... (Sans de type avant le nom de la variable etc.)

Discussions similaires

  1. [MySQL] Utiliser l'identification Joomla dans application tierce
    Par rider74 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 27/03/2010, 15h12
  2. BreakPoint sur WriteProcessMemory dans une application tierce
    Par retj51 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 14/02/2009, 19h54
  3. Réponses: 0
    Dernier message: 30/12/2007, 12h47
  4. [Hook] utilisation des hook sur SVN
    Par billone007 dans le forum Subversion
    Réponses: 1
    Dernier message: 22/11/2006, 16h19
  5. [c#] Mot de passe sur application. Quelle solution utiliser?
    Par Zebeber dans le forum Windows Forms
    Réponses: 9
    Dernier message: 05/10/2006, 20h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo