WarpPointerを適切に機能させるのに少し問題があります。私がやろうとしているシナリオは、ユーザーのクリックを記録してから画面上で再生することに似ています。画面の動きとクリックを問題なく記録することができました。しかし、ユーザーが録音したものを再生することになると、私はつまずきます。
def MoveCursorAndClick(self, e):
# get the current screen position
sp = self.GetPosition()
p = self.getNextPosition() # returned in absolute x,y from screen rec
self.WarpPointer(p.x - sp[0], p.y - sp[1])
# wx.PostEvent(EVT_LEFT_DOWN, self.GetId())
WarpPointerは全画面ではなくウィンドウ内でのみ機能するように見えるため、明らかに上記のコードは正しくありません。機能しているウィンドウの調整をベースにしようとすると、Y方向に約50 pixずれているように見えるため、面倒です。私の現在の唯一の仮定は、これを必要以上に難しくしていることです。wxpythonの経験が浅いために、表示されない理由はもっとあります。
さらに、破壊されたPostEvent行は、別のウィンドウである場合とそうでない場合があるものにマウスクリックを送信するための正しいもののように見える、私がグーグルで検索した唯一のものです。それも正しい方向ですか?
更新 以下に述べるように、これを達成するための良いクロスプラットフォームの方法はありません。これが私がしたことです(インターネット上のさまざまな場所を見つけました):
def ClickScreenPositon(self, x, y):
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)