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 :

Clic auto quand pixel change de couleur dans une appli au premier plan


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Septembre 2022
    Messages : 2
    Par défaut Clic auto quand pixel change de couleur dans une appli au premier plan
    Bonjour,
    c'est mon premier essai en c++. Une vrai débutante. Je surveille un pixel dans une appli de jeu de golf, et quand il change de couleur, je clique.
    Le problème avec AHK ou vb c'est que il y a jusque 10ms entre la détection et le clic, c'est trop lent. On m'a dit que c++ va beaucoup plus vite
    Mais visiblement c++ est très exigeant, je crois que j'ai trouvé les commandes et à peu près la syntaxe mais j'ai tout le temps des erreurs, je sèche

    j'ai aussi lu que la méthode "while" est bourrin, que d'autres méthodes sont mieux, mais j'ai pas trouvé quoi

    donc le lis le code RGB du pixel, j'enregistre le niveau de vert dans deux variables, puis dans une boucle je met a jour une des deux variables jusqu'à ce qu'elle diffère de l'autre, pour détecter le changement de couleur. J'utiliserai une touche pour lancer le script, genre ²:: en AHK

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <conio.h>
    #include <iostream>
    #include <windows.h>
    #include <stdlib.h>
     
     
    HDC hdc = GetDC(NULL);
    DWORD color = GetPixel(hdc, 90, 90);
    unsigned int g1 = GetGValue(color);
    unsigned int g2 = GetGValue(color);
    while( g2!=g1 ) {
    DWORD color = GetPixel(hdc, 90, 90);
    unsigned int g2 = GetGValue(color);
    }
     
    COORD p = { 90, 90 };
    SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), p );
    mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
    voyez vous ce qui cloche?

  2. #2
    Candidat au Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Septembre 2022
    Messages : 2
    Par défaut
    Donc je n'utilise que getpixel et compare directement sa valeur, découper la réponse ne fait qu'ajouter de la charge, du fait que cela génère des requêtes supplémentaires et ouvre d'autres threads, il est plus simple donc de surveiller le DWORD ARGB dans son intégralité

    Ensuite, pas de wait + goto lors des tests, je relance à chaque fois

    je vais commencer par ce détail, je ne suis pas du tout à niveau alors je vais essayer d'expoiter au mieux déjà ce que j'ai compris
    j'ai quelques notion d’électronique (genre TP sur des microcontrôleurs, les BUS, les commandes principales... pas grand chose)
    merci

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 488
    Par défaut
    du fait que cela génère des requêtes supplémentaires
    Je sais pas trop ce que vous entendez par "requête" mais votre "optimisation/filtrage vert" ne fait aucune requête au Kernel supplémentaire.
    C'est juste que cela AJOUTE des instructions (qui sont beaucoup moins consommatrice que tout le reste, je vous l'accorde) donc sauf cas exceptionnel ( gestion optimisée des pipelines d'instruction, des différents niveau de cache, des prédictions de branche, etc... enfin, plein de trucs qui sont totalement hors de portée d'un "newbie") cela prend plus de temps que de ne pas le faire.

    ouvre d'autres threads
    Non plus.

    il est plus simple donc de surveiller le DWORD ARGB dans son intégralité
    OK

    Ensuite, pas de wait + goto lors des tests, je relance à chaque fois
    Jamais de GOTO et évitez les attentes actives.

    Si votre objectif n'est pas le "botting", quel est-il, pour qu'on vous conseille une méthode plus pérenne.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par tezec Voir le message
    il y a jusque 10ms entre la détection et le clic, c'est trop lent.
    Il faut de toutes façons que la frame soit affichée pour détecter le pixel avant de générer le clic qui ne sera effectif qu'à la frame suivante. Donc 10ms sera possible uniquement si ton appli a un fps supérieur à 100 et que ta détection et génération de clic se fait entre son affichage et sa gestion des inputs.
    Si tu arrives déjà à faire ça en VB, et ne connais rien au C++, non, utiliser du C++ ne va pas sûrement magiquement accélérer quoi que ce soit.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Réponses: 10
    Dernier message: 07/06/2018, 09h57
  2. Réponses: 12
    Dernier message: 03/05/2018, 14h22
  3. Réponses: 4
    Dernier message: 31/10/2010, 03h52
  4. toutes les label change de couleur dans une frame
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/03/2008, 20h39
  5. Réponses: 4
    Dernier message: 02/04/2007, 13h25

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