Hook clavier en c#

Description

Ce programme montre (de facon simple) comment réaliser un systême de Hook clavier de manière complètement Asynchrone, et ceci en utilisant les API de Windows. Même si ce programme peut-être utilisé de manière illégal, il est néanmoins un bon exemple afin de montrer comment capter les saisies utilisateurs (par exemple pour faire un robot, ou encore comme dans mon cas pour faire un algorithme d'"IA" se basant sur la probabilité de tapper tel ou tel texte en fonction de l'application, et de proposer différents choix pré-enregistré.

Cette version de la classe de hook est encore bien sommaire et sera améliorée prochainement, néanmoins elle reste fonctionnelle.

Mise a jour a venir:
- Log dans un fichier texte du hook
- Amélioration du formulaire et accès aux données (avec un peu de Linq) afin de pouvoir voir les hook par applications, et les séquences les plus tappées
- Prise en charge de l'ensemble des controles claviers et souris (alphabets russe et arabe, symboles mathématiques)

Source / Exemple :


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Timers;

namespace NetKeylogger
{
    public partial class mainForm : Form
    {

        private Boolean isCaptureEnabled = false;
        private System.Timers.Timer timerUI = new System.Timers.Timer();
        private Keylogger keylog = new Keylogger();

        public mainForm()
        {
            InitializeComponent();

            this.timerUI.Enabled = false;
            this.timerUI.Elapsed += new System.Timers.ElapsedEventHandler(this.timerUI_Elapsed);
            this.timerUI.Interval = 10;
        }

        private void btnCapture_Click(object sender, EventArgs e)
        {
            if (!isCaptureEnabled)
            {
                btnCapture.Text = "Mettre fin a la capture";
                txtLog.Text = "=========================\r\nDébut de la capture\r\n=========================\r\n\r\n";
                keylog.startCapture();
                timerUI.Enabled = true;
                isCaptureEnabled = true;
            }
            else
            {
                btnCapture.Text = "Capturer les saisies utilisateur";
                txtLog.Text += "\r\n\r\n=========================\r\nFin de la capture\r\n=========================\r\n";
                keylog.stopCapture();
                timerUI.Enabled = false;
                isCaptureEnabled = false;
            }

        }

        private void timerUI_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            // on récupère le contenu du buffer
            string temp = this.keylog.getBuffer();

            // s'il est différent de ce qui est déja existant on ajoute a la textbox
            txtLog.Text += temp;
        }

        private void mainForm_Load(object sender, EventArgs e)
        {

        }

    }
}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.