2010-10-24 56 views
2

是的,這就是我需要實現的,不要問爲什麼:) 所以,因爲這主要是操作系統相關的東西,我將使用Windows或Linux(無論更簡單) 每秒我的程序將: 1.做一個截圖,分析板和其他東西(這個我可以做) 2.然後移動鼠標到一些XY,做一個左鍵點擊 這就是全部 我主要關心的是:是否有任何庫用於捕捉屏幕截圖,然後在屏幕上點擊鼠標左鍵?爲我播放flash遊戲的python程序

+0

你可以讓我們知道一些關於你目前的編程經驗嗎?這將有助於我們提出有意義的答案。 – Tim 2010-10-24 10:25:08

+0

嘿!你能否再詳述一下你的問題? – 2010-10-24 10:33:29

回答

1

你可以嘗試Selenium使用Selenium RC + python驅動程序。有瀏覽器屏幕截圖的方法,並且有座標的ClickAt方法。

2

使用ctypes和user32調用。這是第二部分:

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

SendInput就是你要找的模擬鼠標點擊的東西,這裏正是你需要的是爲點擊:http://kvance.livejournal.com/985732.html

的點擊代碼如下(嘗試過了,偉大工程):

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

另外檢查了這一點:http://code.google.com/p/pywinauto/ – soulseekah 2010-10-24 10:53:54

+0

也是這樣的:http://code.google.com/p/pymouse/ – soulseekah 2010-10-24 10:54:55

+0

屏幕截圖:http://www.pythonware.com /library/pil/handbook/imagegrab.htm – soulseekah 2010-10-24 11:03:47

3

我以前做過這事 - 用PIL來獲取截屏,並pywinauto生成鼠標點擊。