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 :

Deplacement du curseur souris sur un point x,y


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut Deplacement du curseur souris sur un point x,y
    Bonjour,
    Je cherche une fonction sur linux, et une sur windows pour deplacer le pointeur de la souris a des coordonner x, y d'un ecran. Je cherche aussi l'evenement clique gauche.

    Exemple :

    Fonction(500, 500);
    Fonction2(clique gauche);

    Merci a vous.

    Possibiliter de l'avoir en Perl, ca me derange pas du tout,
    merci
    Cdt.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Sous Windows, il y a SendInput() pour ça.
    Sous nux, aucune idée.

    PS: Peut-être abordes-tu le problème à l'envers. Que cherches-tu à faire exactement?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut
    Enfaite je voudrais faire un bot, qui va cliquer a un endroit precis. par exemple je veux qu'il clique en 500, 500 toute les 1min.

  4. #4
    Membre émérite
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Par défaut
    Salut,
    Sous unix avec X11,
    XWarpPointer() pour le positionner le pointeur.
    XSendEvent() pour faire un clic

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut
    SYNTAX
    int XWarpPointer(Display *display, Window src_w, Window dest_w, int
    src_x, int src_y, unsigned int src_width, unsigned int
    src_height, int dest_x, int dest_y);

    C'est exactement ce que je cherche, seul probleme, c'est que je comprend pas tres bien le prototypage :s C'est quoi les arguments en param ??

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Un bot pour quoi donc?
    Car selon les cas, il peut y avoir des méthodes plus fiables pour piloter un programme...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut
    Euh, un bot internet, je voudrais qu'il clique sur certain truc seul. C'est vrai qu'il serrait surment plus simple en phph ou java script, mais j'apprend ca que l'anne prochaine, et je me disait que ca aurrait etait un moyen de perfectionner mon c.
    Mais si ca vous semble plus simple dans un autre language, meme en perl, je suis preuneur.
    Je voudrais faire un bot qui va cliquer automatiquement sur certain liens, donc a des parties bien precise de mon ecran.

  8. #8
    Membre émérite
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Par défaut
    Dans ce cas le vrai probleme ca va plutot etre de determiner la position des liens sur ton ecran

    Citation Envoyé par Glocked Voir le message
    SYNTAX
    int XWarpPointer(Display *display, Window src_w, Window dest_w, int
    src_x, int src_y, unsigned int src_width, unsigned int
    src_height, int dest_x, int dest_y);

    C'est exactement ce que je cherche, seul probleme, c'est que je comprend pas tres bien le prototypage :s C'est quoi les arguments en param ??
    La page de man est plutot claire je trouve non? C'est l'anglais qui pose probleme?
    Petit exemple simple, en partant du principe que tu connais les coordonnees de l'endroit ou tu veux cliquer par rapport a la fenetre root (attention a tester les retour de fonctions):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Display *dpy;
    Window root;
    dpy = XOpenDisplay(NULL);
    root = RootWindow(dpy, DefaultScreen(dpy));
    XWarpPointer(dpy, None, root, 0, 0, 0, 0, x, y);
    XCloseDisplay(dpy);

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut
    Merci à toi pour ta réponse.
    Maintenant j'ai un probléme de compile, alors que je ne devrais pas :p :s
    Voilà ma ligne de commande pour compilé :
    gcc -L/usr/X11R6/lib main.c -lx11
    J'ai une suite d'implicite déclaration, suivis d'un cannot find -lx11, j'ai pas mal chercher sur le net, il me dise que je link pas l'include, alors qu'il me semble que je le fais

  10. #10
    Membre émérite
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Par défaut
    J'ai fait une erreur dans le bout de code que je t'ai poste (root est un Window, pas un Window* ). Ceci dit, je ne pense pas que c'est de la que vient l'erreur de compilation: c'est -lX11, pas -lx11

  11. #11
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 109
    Par défaut
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    // Clic_ici.c
    #define _WIN32_WINNT 0x0500
    #include <windows.h>
     
    #define X 700  // Coordonnees x et y du clic
    #define Y 450
     
    //---------------------------------------------------------
    void CALLBACK TimerProc(HWND a, UINT b, UINT_PTR c, DWORD d)
    { // Positionne le curseur souris et simule un clic gauche
      INPUT i[2];
     
      ZeroMemory(i, sizeof(i));
      i[0].type = i[1].type = INPUT_MOUSE;
      i[0].mi.dx = (65535. / (double)GetSystemMetrics(SM_CXSCREEN)) * X;
      i[0].mi.dy = (65535. / (double)GetSystemMetrics(SM_CYSCREEN)) * Y;
      i[0].mi.dwFlags = MOUSEEVENTF_MOVE|MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN;
      i[1].mi.dwFlags = MOUSEEVENTF_LEFTUP;
      SendInput(2, i, sizeof(INPUT));
     
      MessageBeep(0);
    }
     
    //---------------------------------------------------------
    int WINAPI WinMain(HINSTANCE a, HINSTANCE b, LPSTR c, int d)
    {
      MSG      m;
      UINT_PTR t;
     
      // Une seule instance
      CreateMutex(0, 0, "Clic_ici");
      if(GetLastError() == ERROR_ALREADY_EXISTS)
        return 1;
     
      // Toutes les minutes ...
      t = SetTimer(0, 1, 60000, TimerProc);
     
      // Ctrl + Alt + Q pour quitter
      RegisterHotKey(0, 1, MOD_CONTROL|MOD_ALT, 'Q');
     
      while(GetMessage(&m, 0, 0, 0))
      {
        DispatchMessage(&m);
        if(m.message == WM_HOTKEY)
          if(m.wParam == 1)
            break;
      }
     
      UnregisterHotKey(0, 1);
      KillTimer(0, t);
      return 0;
    }

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 15
    Par défaut
    Bonjour,
    Merci pour vos réponses clair =)
    Je vais essayer de le coder en GTK, car la libX est plutôt vieille et pas facile à utiliser, on me l'a conseillé.
    Pour ce qui est pour windows, merci, je vais le tester dés que j'ai un petit peu de temps =)

Discussions similaires

  1. Changement curseur souris sur image
    Par thuglife dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/03/2015, 13h41
  2. afficher des resultats lors du passage de la souris sur un point du graphe
    Par speedy_g dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 05/03/2008, 10h44
  3. Disparition du curseur souris sur combobox
    Par Dev_Michael dans le forum C++Builder
    Réponses: 1
    Dernier message: 01/03/2008, 13h59
  4. deplacer la souris sur un element
    Par lacsap49 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/03/2006, 22h47
  5. Réponses: 3
    Dernier message: 20/10/2005, 20h24

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