mausklick mit ctypes

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Sonntag 7. Dezember 2008, 12:41

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)
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

Sonntag 7. Dezember 2008, 13:02

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
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
Benutzeravatar
crackpod_
User
Beiträge: 40
Registriert: Mittwoch 3. Dezember 2008, 21:46

Sonntag 7. Dezember 2008, 13:43

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?
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

Sonntag 7. Dezember 2008, 14:16

aja :)

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

lg
roschi
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

Sonntag 7. Dezember 2008, 14:43

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
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Sonntag 7. Dezember 2008, 17:34

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.
Antworten