Programm, dass Maus und Tastatur steuert?



  • Hallo zusammen,

    ich weiß nicht, ob das das richtige Forum ist, aber ich versuchs mal;-)

    Ich möchte ein Programm schreiben, dass folgendes kann:

    Bewege den Mauszeiger zu Position x, y...klicke doppelt...schreibe in das Text feld an Position x,y des sich öffnenden Fensters "hallo"...klicke doppelt an Position x,y und immer so weiter. Ich weiß, dass es dafür spezielle Makro Programme gibt, allerdings möchte ich die aus bestimmten Gründen nicht benutzen. Wie kann ich das Problem am einfachsten lösen?

    Ich habe schon gehört, dass es mit der WinApi gehen soll, mittels "mouse_event" und "SetCursorPos" zum Beispiel. Leider kenne ich mich mit der WinApi nicht aus und suche nach einer leichteren Lösung, falls es die geben sollte;-)

    Danke euch:-)



  • Es gibt nur die Möglichkeit sich mit einem Framework auseinanderzusetzen.
    Also WinApi, MFC, NET, QT und dann die entsprechende Sprache zu nutzen.

    WinApi -> C -> Petzolt
    MFC -> C++ -> Kruglinski
    NET -> C#,VBNet -> Autor selber suchen
    QT -> C++ -> Doku auf der QT-Hompage

    Falls man die zu nutzenden Sprachen und Programmparadigmen noch nicht beherrscht, diese lernen.
    Bis in einem halben Jahr und viel Spaß



  • Ich habe folgenden Link gefunden:

    http://www.c-plusplus.net/forum/86415

    in dem folgender Quelltext steht:

    #include <windows.h>
    
    // Initialisiert die Maus und gibt die Anzahl der Maustasten zurück
    DWORD mouseInit ()
    {
        DWORD mode;
        GetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),&mode);
        SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE),mode|ENABLE_MOUSE_INPUT);
    
        DWORD buttons;
        GetNumberOfConsoleMouseButtons(&buttons);
    
        return buttons;
    }
    
    // Zeigt oder versteckt den Mauscursor
    void showCursor (bool show = true)
    {
        ShowCursor(show);
    }
    
    int main ()
    {
        mouseInit();
        showCursor();
    
        bool running = true;
        do
        {
            DWORD count;
            INPUT_RECORD ir;
            ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE),&ir,1,&count);
    
            switch(ir.EventType)
            {
                case KEY_EVENT:
                    running = false; // Beenden bei Tastendruck
                break;
    
                case MOUSE_EVENT:
                    cout << "X: " << ir.Event.MouseEvent.dwMousePosition.X;
                    cout << " Y: " << ir.Event.MouseEvent.dwMousePosition.Y;
                    if(ir.Event.MouseEvent.dwButtonState & FROM_LEFT_1ST_BUTTON_PRESSED)
                        cout << " | Linke Taste gedrueckt!";
                    if(ir.Event.MouseEvent.dwButtonState & RIGHTMOST_BUTTON_PRESSED)
                        cout << " | Rechte Taste gedrueckt!";
                break;
            }
        }
        while(running);
        return 0;
    }
    

    Ich denke, dass ist schon nahe an dem, was ich suche. Ich müsste doch nur irgendwas hinter "Case MOUSE_EVENT:" ändern oder?



  • Hast Du das Beispiel mal kompiliert und zum laufen gebraucht?
    Tust Du das, weißt Du was fehlt.
    Guck in den Petzolt.
    Ein Grundkurs WinApi ist nicht in einem Thread zumachen.


Anmelden zum Antworten