NHR
Autoclicker et environnement d’automatisation du clavier, de la souris et de l’écran, pour Windows.
NHR automatise ce que vous feriez à la main : cliquer, taper, déplacer le curseur, attendre qu’une couleur apparaisse, recommencer. Dans NHR, un programme n’est pas une liste de clics figée, mais un arbre d’étapes avec SI/SINON, boucles, variables et expressions, que l’on construit dans un éditeur complet : palette d’actions avec recherche, inspecteur, vue graphe, points d’arrêt, console d’exécution. On peut aussi enregistrer une séquence au clavier et à la souris : NHR la reconstruit en étapes lisibles et modifiables plutôt qu’en un flot d’évènements bruts. Et parce qu’un logiciel qui prend le clavier doit pouvoir le rendre, trois garde-fous sont actifs par défaut : arrêt d’urgence par raccourci global, arrêt en poussant le curseur dans un coin de l’écran, et relâchement automatique des touches et des boutons restés enfoncés.
Développeurs et testeurs qui rejouent des scénarios d’interface, équipes qui doivent saisir la même chose des centaines de fois dans un logiciel sans API, personnes qui préfèrent confier à la machine un geste qu’elles répéteraient des centaines de fois, et toute personne à l’aise avec la logique d’un enchaînement mais qui ne veut pas écrire de code.
Pas encore de version publiée
NHR est en développement actif. Suivez le projet pour être prévenu de la première version publique.
L’essentiel
Ce qui distingue NHR
Trois garde-fous, actifs par défaut
Échap coupe tout, y compris pendant que le moteur injecte des touches : c’est le seul raccourci qui passe à ce moment-là, et celui-là ne se désactive pas. Pousser le curseur dans un coin de l’écran arrête l’exécution. À l’arrêt, les touches et les boutons restés enfoncés sont relâchés. Ces deux derniers sont cochés par défaut et restent sous votre contrôle ; tous deux sont couverts par la suite de tests du moteur.
Un programme, pas une macro figée
SI / SINON SI / SINON, boucles par nombre de tours, tant que, jusqu’à ou sans fin, interrompre et tour suivant, gestion des erreurs, appel d’un autre programme comme sous-routine. Les variables et le moteur d’expressions servent partout : « répéter cibles * 2 fois » dans un champ numérique, « Trouvé {{compteur}} fois » dans un message de journal.
L’enregistrement redevient lisible
La capture globale du clavier et de la souris est reconstruite en gestes réellement effectués : un appui-relâchement au même endroit redevient un clic, un appui-déplacement-relâchement un glisser, une touche pressée sous Ctrl un raccourci. Les attentes sont arrondies pour rester lisibles, et les évènements bruts sont conservés : la même capture peut être reconvertie avec d’autres réglages.
Un IDE, pas une boîte de dialogue
Bibliothèque en dossiers, éditeur d’étapes arborescent avec glisser-déposer, vue graphe qui montre toujours exactement le programme en cours d’édition, palette d’actions avec recherche, inspecteur, points d’arrêt, exécution pas à pas, console d’exécution et variables en direct.
Captures d’écran
L’application en images
L’éditeur d’étapes : une boucle de 40 tours qui remplit un formulaire, tape un texte interpolé « REF-{{ligne}} », puis branche sur un SI/SINON selon que la ligne est acceptée ou refusée. À droite, la variable du programme, les garde-fous d’arrêt et un déclencheur planifié à 08:30 du lundi au vendredi.
La palette d’actions, classée par famille (souris, clavier, attente, enchaînement, système, données), avec une recherche pour insérer une étape sans quitter le clavier.
Une condition composée : un groupe ET qui exige à la fois une fenêtre précise au premier plan et un pixel d’une couleur donnée, avec tolérance et bouton de test sur l’écran réel.
Les garde-fous : arrêt d’urgence sur Échap qui reste actif même quand NHR n’a pas le focus, arrêt par le coin de l’écran avec sa marge réglable, durée maximale d’exécution et relâchement automatique des touches restées enfoncées.
Fonctionnalités
Tout ce qu’il sait faire
La liste complète, sans distinction entre gratuit et payant : ces fonctions existent, elles sont dans le logiciel.
Actions d’entrée
- Clic gauche, droit, milieu ; double-clic ; appui et relâchement séparés ; durée de maintien réglable
- Cadence en nombre de répétitions et intervalle, avec variation aléatoire exprimée en pourcentage de l’intervalle
- Molette dans les quatre directions
- Déplacements absolus, relatifs, aléatoires dans une zone, relatifs à une fenêtre, ou sur une image reconnue à l’écran
- Trajet interpolé avec courbe de progression (dont une courbe « humaine ») et bruit latéral en pixels
- Glisser-déposer, frappe de touche, raccourci avec modificateurs, maintien de touche
- Saisie de texte à cadence réglable en caractères par minute, avec rythme irrégulier en option
- Lecture et écriture du presse-papiers
Enchaînement et logique
- SI / SINON SI / SINON, avec autant de branches que nécessaire
- Boucles par nombre de tours, tant que, jusqu’à, ou sans fin ; interrompre et tour suivant
- Groupes, gestion des erreurs (« en cas d’erreur… ») avec le message rangé dans une variable, appel d’un autre programme comme sous-routine
- Variables de programme, remises à leur valeur initiale à chaque démarrage
- Moteur d’expressions : arithmétique, comparaisons, ET/OU, ternaire, et vingt-cinq fonctions (random, clamp, contains, hour…)
- Interpolation « {{ … }} » dans les champs texte du moteur : texte tapé, presse-papiers, messages de journal, valeurs de variables, chemins de lancement, URL et notifications
- Variables intégrées : taille de l’écran, position du curseur, temps écoulé, numéro d’itération
Conditions
- Couleur d’un pixel avec tolérance, proportion d’une couleur dans une zone, changement dans une zone
- Image modèle retrouvée à l’écran par corrélation, avec seuil de correspondance et zone de recherche
- Touche ou bouton physiquement enfoncé, curseur dans une zone
- Plage horaire (le passage de minuit est géré), jour de la semaine, temps écoulé depuis le démarrage
- Fenêtre au premier plan ou simplement ouverte, par titre : contient, égal, ou expression régulière
- Comparaison de variable, probabilité en pourcentage, expression libre
- Combinables par groupes ET / OU imbriqués, chaque nœud inversible ; l’évaluation est paresseuse, un ET s’arrête au premier faux
Déclencheurs et enregistrement
- Raccourci global, en mode bascule ou en démarrage seul (le raccourci lance, mais n’arrête pas)
- Heure planifiée avec jours de la semaine, intervalle régulier, démarrage de l’application
- Déclenchement quand une condition devient vraie, sur le front montant uniquement
- Les raccourcis globaux ne bloquent pas la touche : elle atteint quand même l’application dessous
- Enregistrement du clavier et de la souris, avec seuil de distance pour ne pas retenir un point par pixel parcouru
- Reconstruction en clics, glissers, raccourcis et maintiens, avec attentes arrondies pour rester lisibles
- Les évènements bruts sont conservés : une macro peut être reconvertie avec d’autres réglages
L’IDE
- Bibliothèque en vrais dossiers sur le disque, un fichier JSON par programme, import et export
- Éditeur d’étapes arborescent : glisser-déposer avant, après, ou dans un conteneur, y compris dans la branche SINON d’un SI
- Palette d’actions avec recherche, entièrement pilotable au clavier
- Inspecteur pour régler les paramètres, avec un bouton « essayer cette étape » qui exécute une étape isolée
- Vue graphe cliquable, qui montre toujours exactement le programme en cours d’édition
- Points d’arrêt, exécution pas à pas, pause et reprise en cours d’exécution
- Console à trois onglets : journal d’exécution, variables en direct, enregistreur
- Cent niveaux d’annulation et de rétablissement, sélection multiple, copier-coller d’étapes, thème sombre et clair, français et anglais
Sécurité, contrôle et précision
- Arrêt d’urgence par raccourci global (Échap par défaut), traité dans le processus principal, prioritaire sur l’injection en cours et non désactivable
- Coin de l’écran : y pousser le curseur arrête l’exécution ; la marge est réglable, et le garde-fou s’active au niveau de l’application comme du programme
- Relâchement des touches et boutons restés enfoncés : systématique à l’arrêt d’urgence et au démarrage de l’application, et sur les arrêts ordinaires tant que l’option du programme reste cochée, ce qui est le réglage par défaut
- Durée maximale d’exécution, réglable par programme et pour l’application entière
- Un seul programme à la fois : deux moteurs qui pilotent le même curseur ne donnent à personne un résultat reproductible
- Le moteur reste interruptible partout : chaque attente reçoit le drapeau d’abandon, chaque étape le teste avant de commencer, et une longue attente est découpée pour qu’un arrêt prenne effet tout de suite plutôt qu’à la fin
- Attente hybride (minuterie, puis courte attente active sur les deux dernières millisecondes) pour ne pas subir la granularité de ~15 ms des minuteries système sur les intervalles courts
Tarifs
Ce que comprend la licence, et ce qui arrive
NHR est aujourd’hui gratuit pour un usage personnel, et complet : tout ce qui est décrit sur cette page fonctionne dans la version téléchargeable, sans clé, sans compte et sans bridage. Le logiciel ne contient aucun code de licence ni d’activation. Une offre payante est à l’étude ; elle porterait sur les pistes ci-dessus et sur l’usage commercial. Rien de ce qui est gratuit aujourd’hui n’y passera, et aucune date n’est annoncée.
La licence
25 € une fois- Toutes les actions d’entrée : clics, cadence, molette, déplacements, glissers, frappes, raccourcis, saisie de texte, presse-papiers
- Logique complète : SI/SINON, boucles, groupes, gestion des erreurs, variables et moteur d’expressions
- Toutes les conditions : couleur d’un pixel, proportion de couleur ou changement dans une zone, image modèle retrouvée à l’écran, touches et boutons enfoncés, position du curseur, titre de fenêtre, heure, jour, temps écoulé, variables, probabilité et expressions
- Vision de l’écran : recherche d’image modèle par corrélation, clic sur l’image trouvée, et bibliothèque d’images capturées directement à l’écran avec le sélecteur de zone
- Automatisation de fenêtres : cible relative à une fenêtre, mise au premier plan, conditions sur les titres (contient, égal, expression régulière)
- Tous les déclencheurs : raccourci global, heure planifiée, intervalle régulier, démarrage de l’application, et condition qui devient vraie
- Enregistrement de macros et reconstruction en étapes éditables, les évènements bruts restant reconvertibles
- Sous-routines : appeler un autre programme depuis un programme, pour construire une bibliothèque réutilisable (les variables du programme appelé sont reprises quand elles ne sont pas déjà définies)
- Étapes système : capture d’écran vers un dossier, notification de bureau, lancement d’application, ouverture d’URL
- L’IDE au complet : bibliothèque, arbre d’étapes, palette, inspecteur, vue graphe, points d’arrêt, exécution pas à pas, console, cent niveaux d’annulation
- Les trois garde-fous de sécurité, l’arrêt d’urgence non désactivable, et la durée maximale d’exécution
- Import et export des programmes en JSON : des fichiers lisibles, copiables et versionnables
- Français et anglais, thème sombre et clair, réduction dans la zone de notification
- Fonctionnement hors ligne : ni compte, ni activation, ni connexion internet
À venir dans la licence
- Une licence couvrant l’usage commercial et professionnel (l’usage personnel resterait gratuit)
- Passer des arguments à une sous-routine : le format de programme réserve déjà le champ, mais ni le moteur ni l’éditeur ne l’exploitent aujourd’hui
- Étendre l’interpolation « {{ … }} » aux champs qui ne la reçoivent pas encore : titres de fenêtre, dossier de destination d’une capture, heure d’une attente
- Programme d’installation signé et mises à jour automatiques : la configuration de publication existe, la signature du code n’est pas encore en place
- Versions Linux et macOS réellement empaquetées et testées : la couche native est écrite pour ces systèmes, mais rien n’y est publié ni vérifié
- Export du journal d’exécution en fichier, pour garder une trace vérifiable d’une série de traitements
- Une file d’exécution pour enchaîner plusieurs programmes, là où le moteur n’en accepte qu’un à la fois
- Un canal de contact direct pour signaler un bug ou demander une fonctionnalité
Rien de tout cela n’est encore développé. Ces fonctions arriveront chez celles et ceux qui possèdent déjà la licence, sans rien payer de plus.
Stack
- Electron 43
- React 19
- TypeScript (mode strict)
- Vite
- electron-vite
- zustand
- immer
- lucide-react
- @nut-tree-fork/libnut
- uiohook-napi
- electron-builder
- vitest
Configuration requise
Windows 10 ou 11 (64 bits), au choix en programme d’installation ou en version portable. Le code est écrit pour être portable sur Linux et macOS, mais aucune version n’y est publiée ni testée à ce jour. Le client de bureau est nécessaire, c’est lui qui pilote le clavier, la souris et l’écran ; la version navigateur permet d’éditer un programme mais pas de l’exécuter. Aucun compte ni connexion internet requis : les programmes sont des fichiers JSON dans le répertoire de données de l’application.
FAQ
Questions fréquentes
Est-ce un outil de triche pour les jeux en ligne ?
Non. NHR est fait pour l’automatisation du poste de travail : tests d’interface, saisie répétitive, tâches administratives, et délégation du geste quand on préfère ne pas refaire le même clic des centaines de fois. Techniquement, NHR ne contourne aucun anti-triche et n’injecte rien dans un autre processus : il pilote le clavier et la souris du système, exactement comme vous le feriez. Automatiser un jeu en ligne enfreint en général ses conditions d’utilisation, et cet usage relève de votre seule responsabilité.
Que se passe-t-il si un programme part de travers ?
Trois façons d’en sortir, toutes actives par défaut. Le raccourci d’arrêt d’urgence (Échap) est traité dans le processus principal et reste le seul à passer pendant que le moteur injecte des touches ; celui-là ne se désactive pas. Pousser le curseur dans un coin de l’écran arrête l’exécution, ce qui reste possible même quand un programme monopolise le clavier. Et l’arrêt d’urgence relâche toujours les touches et les boutons encore enfoncés, sans quoi un programme coupé au milieu d’un « maintenir Ctrl » laisserait la machine inutilisable. Les arrêts ordinaires font de même tant que l’option « relâcher les touches à l’arrêt » du programme reste cochée, ce qui est le réglage par défaut.
Comment NHR trouve-t-il un bouton ou une image à l’écran ?
En regardant les pixels affichés, rien d’autre. Trois approches : la couleur d’un pixel précis avec une tolérance, la proportion d’une couleur ou la détection d’un changement dans une zone, et la recherche d’une image modèle par corrélation, avec un seuil de correspondance et une zone de recherche pour limiter le travail. Les images modèles se capturent directement à l’écran avec le sélecteur de zone et sont rangées en PNG dans le répertoire de données de l’application. NHR ne lit pas le texte à l’écran et n’inspecte pas les composants du logiciel visé : un changement de thème, de résolution ou de mise à l’échelle peut donc demander de recapturer un modèle.
Où sont stockés mes programmes ? Faut-il un compte ou une connexion ?
Ni compte, ni connexion. Chaque programme est un fichier JSON dans un vrai dossier, sous le répertoire de données de l’application. Vous pouvez ouvrir ce dossier dans l’explorateur, y copier un fichier, le versionner avec git ou l’envoyer par mail sans que NHR vienne s’interposer. L’import et l’export utilisent le même format.
Sur quels systèmes NHR fonctionne-t-il ?
Windows 10 et 11, au choix en programme d’installation ou en version portable. Le code est écrit pour être portable sur Linux et macOS, mais aucune version n’y est publiée ni testée à ce jour. Le client de bureau est indispensable : c’est lui qui apporte l’injection des entrées clavier et souris, la capture d’écran et les hooks globaux. La version navigateur permet d’éditer un programme, pas de l’exécuter, et le dit clairement en barre d’état.
Faut-il savoir programmer ?
Non, mais il faut être à l’aise avec la logique d’un enchaînement. On construit un programme dans un éditeur : on ajoute des étapes depuis une palette, on les réorganise à la souris, on règle les paramètres dans un inspecteur. Rien à taper si vous n’en avez pas envie : les expressions sont là quand vous en aurez besoin, et le résultat reste un fichier texte lisible.
Comment démarrer sans tout écrire à la main ?
Par l’enregistreur. Vous lancez la capture, vous faites une fois la tâche au clavier et à la souris, vous arrêtez : NHR reconstruit la séquence en étapes lisibles (clics, glissers, raccourcis, attentes arrondies) que vous pouvez ensuite corriger, mettre dans une boucle ou conditionner. Et comme les évènements bruts sont conservés, la même capture peut être reconvertie avec d’autres réglages. Deux programmes d’exemple sont également présents à la première ouverture de la bibliothèque.
Essayez NHR, licence à vie
Et si quelque chose ne va pas, dites-le : les rapports de bug sont ce qui fait avancer le logiciel le plus vite.