1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

XSendEvent zum Simulieren von Mausklicks

    • Frage
  • escitalopram
  • 19. April 2006 um 00:33
  • Unerledigt
  • escitalopram
    4
    escitalopram
    Mitglied
    Punkte
    105
    Beiträge
    16
    • 19. April 2006 um 00:33
    • #1

    Hi,
    Ich versuche ein Programm zu schreiben, das mir eine bestimmte Stelle in einem bestimmten X-Fenster automatisch anklickt. Allerdings scheine ich da irgendwas falsch zu machen, denn das Programm läuft zwar klaglos durch, aber der Klick wird nicht ausgeführt. (Ja ich rechne auch die Hex-Fensternummer vom xwininfo in dezimal um)

    C
    #include <stdlib.h>
    #include <iostream>
    #include <X11/Xlib.h>
    
    
    using namespace std;
    
    
    int main (int argc, char* argv[]) {
            Display* d;
            d=XOpenDisplay(0);
            if (argc!=2) {
                    cout << "Please specify a window number" << endl;
                    exit (-1);
            }
    
    
            int wn=atoi(argv[1]);
            cout << "Window number is "<< wn << endl;
    
    
            if (d) {
                    cout << "Display opened sucessfully" << endl;
            } else {
                    cout << "Cannot open $DISPLAY" << endl;
                    exit(-1);
            }
    
    
            XButtonEvent e;
            e.type=ButtonPress;
            e.button=1;
            e.state=1;
            e.window=wn;
            e.serial=0;
            e.send_event=true;
            e.same_screen=true;
            e.root=XDefaultRootWindow(d);
            e.subwindow=0; //?!
            e.time=0;
            e.x_root=720; // Koordinaten vom Bildschirm nehm ich an, mit xev ausgemessen
            e.y_root=845;
            e.x=269; // Koordinaten vom Zielfenster? auch mit xev gemessen
            e.y=466; // stimmt nicht 100% genau mit [xy]_root zusammen, aber ich denk mal das ist egal
    
    
            cout << "XSendEvent says "<< XSendEvent(d, wn, true /* ? */, 0, (XEvent*)&e) << endl;
            usleep(100000);
            e.type=ButtonRelease;
            XSendEvent(d, wn, true /* ? */, 0, (XEvent*)&e);
    
    
            XCloseDisplay(d);
            return 0;
    }
    Alles anzeigen

    Vielleicht gibt's ja hier jemanden im Forum, der mit sowas schon Erfahrung hat und mir da ein bisschen weiterhelfen könnte. Vielen Dank!

    http://www.blasphemie.at

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung