2014-03-04 115 views
0

我試圖模擬鼠標點擊與PythonWIN32API移動鼠標幾乎

我的代碼如下:

class Mouse(object): 

    def __init__(self): 
     self.x_res = win32api.GetSystemMetrics(0) 
     self.y_res = win32api.GetSystemMetrics(1) 

    def rightClick(self, x, y): 
     nx = x*65535/self.x_res 
     ny = y*65535/self.y_res 
     win32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE|win32con.MOUSEEVENTF_MOVE,nx,ny) 
     win32api.Sleep(200) 
     win32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE|win32con.MOUSEEVENTF_RIGHTDOWN,x,y,0,0) 
     win32api.Sleep(200) 
     win32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE|win32con.MOUSEEVENTF_RIGHTUP,x,y,0,0) 
     win32api.Sleep(700) 

我用這樣的代碼:

mouse = Mouse() 
win32api.Sleep(2000) 
x = 2520 
y = 414 
mouse.leftClick(x, y) 

然而,這移動真正的鼠標,所以它擾亂了用戶。他們是發送該事件的一種方式,但不用真正移動鼠標?

+0

我是唯一一個可視化「這將移動真正的鼠標」,意味着用戶手上的鼠標,它匆忙到整個鼠標墊不同的位置? – mhlester

+2

這就是說,我相信你只需要記下原始位置,移動光標,點擊並移回 – mhlester

+0

Windows中通常只有一個鼠標。所以我同意@mhlester。但也許你可以添加第二個鼠標。 – User

回答

1

如果您堅持要僞造輸入來自動執行此操作,那麼您將遇到目前的問題。當您輸入虛假信息時,系統會按照實際輸入的方式進行響應。您可以將光標移回到原來的位置,但用戶會看到它彈起。這真的不是一件好事。

你需要的是解決你的問題,不涉及僞造輸入。當然,你沒有詳細說明問題,只是你的解決方案,所以我們必須猜測這個問題。它看起來像你試圖自動化一些外部應用程序。該平臺通過UIAutomation提供支持。

+0

好吧,我會發布實際的問題,而不是要求在30分鐘左右的更具體的應用 – edi9999

+0

這裏是它︰http://stackoverflow.com/questions/22198792/create-a-poker-table-scanner – edi9999

+0

我們可以首先處理這個問題? –

0

請參閱Multiple mouse/mice/cursor?,它是指Windows MultiPoint Mouse SDK。 CPNMouse項目不再存在,AFAICT。

+0

誰downvoted誰可以解釋爲什麼?如果有兩個鼠標光標,則可以根據需要移動鼠標以點擊按鈕,將用戶的鼠標指針留在原來的位置。所以,儘管其他答案可能會更好,但我認爲我的答案不對。 – Schollii