2010-10-24 5 views
2

Oui, c'est ce que j'ai besoin de réaliser, ne demandez pas pourquoi :) Donc, puisque ce sont principalement des choses dépendantes du système d'exploitation, je vais utiliser Windows ou Linux (quoi de plus simple) Chaque seconde mon programme va: 1. faire une capture d'écran, analyser le tableau et d'autres choses (ce que je peux faire) 2. puis déplacez la souris à un certain XY et faites un clic gauche c'est tout Ma principale préoccupation est: Y a-t-il une bibliothèque pour capturer des captures d'écran et puis cliquer gauche quelque part sur l'écran?programme python qui joue à des jeux flash pour moi

+0

Pourriez-vous nous faire part de votre expérience de programmation actuelle? Cela nous aidera à trouver des réponses qui ont du sens. – Tim

+0

hey! pourriez-vous élaborer votre problème un peu plus? –

Répondre

1

Vous pouvez essayer d'utiliser le pilote Selenium RC + python pour Selenium. Il existe des moyens de faire une capture d'écran du navigateur, et il existe une méthode ClickAt qui prend des coordonnées.

2

Utilisez les types de caractères ctypes et les appels user32. Ceci est pour la deuxième partie:

from ctypes import * 
windll.user32.SetCursorPos(x, y) 

SendInput est la chose que vous cherchez pour simuler les clics de souris, voici exactement ce dont vous avez besoin pour cliquer: http://kvance.livejournal.com/985732.html

Le code de clic est le suivant (ai essayé, fonctionne très bien):

from ctypes import * 
user32 = windll.user32 

# START SENDINPUT TYPE DECLARATIONS 
PUL = POINTER(c_ulong) 
class KeyBdInput(Structure): 
    _fields_ = [("wVk", c_ushort), 
      ("wScan", c_ushort), 
      ("dwFlags", c_ulong), 
      ("time", c_ulong), 
      ("dwExtraInfo", PUL)] 

class HardwareInput(Structure): 
    _fields_ = [("uMsg", c_ulong), 
      ("wParamL", c_short), 
      ("wParamH", c_ushort)] 

class MouseInput(Structure): 
    _fields_ = [("dx", c_long), 
      ("dy", c_long), 
      ("mouseData", c_ulong), 
      ("dwFlags", c_ulong), 
      ("time",c_ulong), 
      ("dwExtraInfo", PUL)] 

class Input_I(Union): 
    _fields_ = [("ki", KeyBdInput), 
       ("mi", MouseInput), 
       ("hi", HardwareInput)] 

class Input(Structure): 
    _fields_ = [("type", c_ulong), 
      ("ii", Input_I)] 

class POINT(Structure): 
    _fields_ = [("x", c_ulong), 
      ("y", c_ulong)] 
# END SENDINPUT TYPE DECLARATIONS 

FInputs = Input * 2 
extra = c_ulong(0) 

click = Input_I() 
click.mi = MouseInput(0, 0, 0, 2, 0, pointer(extra)) 
release = Input_I() 
release.mi = MouseInput(0, 0, 0, 4, 0, pointer(extra)) 

x = FInputs((0, click), (0, release)) 
user32.SendInput(2, pointer(x), sizeof(x[0])) 
+0

Vérifiez également cela: http://code.google.com/p/pywinauto/ – soulseekah

+0

Aussi: http://code.google.com/p/pymouse/ – soulseekah

+0

Captures d'écran: http://www.pythonware.com /library/pil/handbook/imagegrab.htm – soulseekah

3

Je l'ai fait cette chose avant - utiliser PIL pour obtenir les captures d'écran et pywinauto pour générer les clics de souris.

Questions connexes