Mause und Tastatureingaben



  • Hallo, habe folgende Probleme:

    1. Wie lasse ich im API die Maus auf einen bestimmten Punkt(x,y) springen?

    2. Wie lasse ich mein Programm an ein bestimmtes Fenster mit einem HWND Tastatureingaben senden,sodass diese Eingabe auf die Art des aktiven Programmes ausgewertet wird. ?

    3. Wie lasse ich die Maus klicken?

    4. Wie finde ich den Handle des Fenster raus welches gerade fokusiert ist.

    5. Wie lasse ich ein Fenster fokussieren?(weniger wichtig)

    Ich glaube ihr wisst was ich meine. Danke für eure Hilfe!



  • ganz einfach...

    1. zu google.de gehen
    2. "autoit download" eintippen
    3. autoit downloaden
    4. autoit installieren
    5. 10min über syntax lesen
    6. dein prog schreiben
    7. zu ner exe kompilieren
    8. freuen, dass es funzt :xmas1: :xmas2:



  • Okay danke ! <freu> :xmas1: :xmas2:

    Ja das ist ja nur ein Programm das das hier macht , aber ich will Code 😞 .



  • 1.) SetCursorPos
    2.) SendMessage/SendInput/keybd_event/mouse_event
    3.) siehe 2.)
    4.) FindWindow
    5.) SetWindowPos

    schirrmie



  • gut danke wie lasse ich mit SendMessage() einen tastendruck senden?
    Was muss ich für ein Flag beim 2. Parameter setzen?
    Ich habe eine Zusammenfassung und da wird nur WM_KEYDOWN und WM_KEYUP aufgeführt wie kann ich den Konstanten Parameter geben?

    fettes DANKE



  • C-Chris schrieb:

    Ich habe eine Zusammenfassung und da wird nur WM_KEYDOWN und WM_KEYUP aufgeführt wie kann ich den Konstanten Parameter geben?

    fettes DANKE

    Hier eine Liste mit den Virtual Key-Codes
    http://msdn2.microsoft.com/en-us/library/ms645540.aspx

    lg.sikayak



  • Okay danke.
    Also für ein "a" schreibe ich dann

    SendMesage(hWnd,41,...);
    

    oder:

    SendMessage(hWnd,(41),...);
    

    mfg Chris

    P.S.: Probiere es mal aus. 😮



  • C-Chris schrieb:

    Also für ein "a" schreibe ich dann

    SendMesage(hWnd,41,...);
    

    oder:

    SendMessage(hWnd,(41),...);
    

    Nein!



  • Nope, das geht mit Accelerators, diese musst du zuerst nach der Syntax "nameID ACCELERATORS DISCARDABLE
    BEGIN
    // Hier dann deine Werte nach dem Schema:
    "a" nameID, VIRTKEY, CONTROL, NOINVERT // Bei STRG+A wird das aktiviert
    END

    Dann fragst du das in der Hauptschleife mit TranslateAccelerator ab und dann wird dir eine Nachricht in deine WinProcedure geschickt, die im LOWORD des wParams unter WM_COMMAND ankommt.

    D.h. werte das so aus:

    switch(msg)
    {
    ...
    case WM_COMMAND: // Eine Taste wurde gedrückt
    switch(LOWORD(wParam))
    {
    case nameID:
    // Jetzt wurde die Taste mit der ID "nameID" gedrückt
    }
    ...
    }

    Weiteres kannst du unter den Suchworten TranslateAccelerator, WM_COMMAND, ACCELERATOR usw in der Microsoft-MSDN herausfinden 🙂

    Hier ein paar rausgesuchte Sachen:

    ACCELERATORS Resource: http://msdn2.microsoft.com/en-us/library/aa380610.aspx
    TranslateAccelerator(): http://msdn2.microsoft.com/en-us/library/ms646373.aspx
    WM_COMMAND: http://msdn2.microsoft.com/en-us/library/ms647591.aspx

    Den Rest reimst du dir dann zusammen 😉

    Greetings,
    Chaos



  • Ich weis nicht wie ich mit der Funktion FindWindow die mir einen Handle(HWND) zurückliefert umgehen soll. Woher soll ich den den Klassennamen eines fremden Fensters wissen z.B. IE(=Internet Explorer). Kann mir jemand ein Codebeispiel geben in dem erläutert wird wie man:
    1.:Fensterhandle herausfinden mit FindWindow:

    HWND FindWindow(lpWindowClass,lpWindowName);
    

    2.:Fenster in Vordergrund bringt(Problem: Welche Flag ? ):

    BOOL SetWindowPos(HWND hWnd,HWND hWndInsertAfter,int x,int y,int cx,int cy,UINT uFlags);
    

    Danke.


Anmelden zum Antworten