Seite 1 von 1

mausklick mit ctypes

Verfasst: Sonntag 7. Dezember 2008, 12:41
von INFACT
Hallo! :D :D
Ich versuche ein programm zu schreiben , dass mit einer maus hin und her geht und klicken kann ich habe es schon geschafft mit ctypes die maus an einen bestimmten standort zu bewegen:

Code: Alles auswählen

import sys
 
def set_cursor_pos(x, y):
    if sys.platform == 'win32':
        from ctypes import windll
         
    elif sys.platform == 'something else':
        some_other_way_to_move_the_cursor(x,y)
 
set_cursor_pos(100, 100)
ich versuche jetzt heraus zu finden wie ich mit der maus klicken kann
währe dankbar für antworten!!! 8)

Verfasst: Sonntag 7. Dezember 2008, 13:02
von roschi
darf ich fragen, wo du dort etwas bewegst?
du importierst doch nur 'ctypes.windll' wenn es ein windows-system ist, wenn nicht, dann eine funktion, die (laut name) einen anderen weg implementiert, die maus zu bewegen. allein vom importieren bewegt sich doch nichts!?

lg
roschi

Verfasst: Sonntag 7. Dezember 2008, 13:43
von crackpod_
So wie es scheint hast du die Lösung von hier.
Beim übernehmen des Codes hast du anscheinend eine Zeile vergessen:

Code: Alles auswählen

import sys
 
def set_cursor_pos(x, y):
    if sys.platform == 'win32':
        from ctypes import windll
        windll.user32.SetCursorPos(x, y)
    elif sys.platform == 'something else':
        some_other_way_to_move_the_cursor(x,y)
 
set_cursor_pos(100, 100)
INTACT, ich glaube einfach mal aufgrund der Inhalte deiner Posts das du daran interessiert bist
bestimmte Aufgaben innerhalb von Windows durch emulierte Tastatureingaben und Mausklicks zu automatisieren.
Hast du dir mal AutoIt bzw. AutoHotkey angesehen?

Verfasst: Sonntag 7. Dezember 2008, 14:16
von roschi
aja :)

zu deinem problem findet die forumssuche etwas:
http://www.python-forum.de/topic-12108.html

lg
roschi

Verfasst: Sonntag 7. Dezember 2008, 14:43
von roschi
hier ist noch eine simple variante, die mit der linken, rechten und mittleren maustaste einfach und doppelt klicken kann.

Code: Alles auswählen

from pywinauto import win32defines, win32functions, win32structures
import ctypes

def click(button="left", double=False, button_down=True, button_up=True):
    """Peform a click action using SendInput    """

    events = []
    if button.lower() == "left":
        if button_down:
            events.append(win32defines.MOUSEEVENTF_LEFTDOWN)
        if button_up:
            events.append(win32defines.MOUSEEVENTF_LEFTUP)
    elif button.lower() == "right":
        if button_down:
            events.append(win32defines.MOUSEEVENTF_RIGHTDOWN)
        if button_up:
            events.append(win32defines.MOUSEEVENTF_RIGHTUP)
    elif button.lower() == "middle":
        if button_down:
            events.append(win32defines.MOUSEEVENTF_MIDDLEDOWN)
        if button_up:
            events.append(win32defines.MOUSEEVENTF_MIDDLEUP)

    if double and button_down and button_up:
        events *= 2

    inp_struct = win32structures.INPUT()
    inp_struct.type = win32defines.INPUT_MOUSE

    for event in events:
        inp_struct._.mi.dwFlags = event
        inp_struct._.mi.mouseData = 0
        win32functions.SendInput(
            1,
            ctypes.pointer(inp_struct),
            ctypes.sizeof(inp_struct))
ich hoffe, das hilft dir weiter.

lg
roschi

Danke

Verfasst: Sonntag 7. Dezember 2008, 17:34
von INFACT
Danke das ist genau das was ich suche!
Vielen Dank
und ja ich versuche ein Progamm zu schreiben, dass Tastendrücke und Mausklicks macht. Nämlich einen Bot für ein Spiel.