Windowsの下でPythonでマウスクリックをシミュレート
本文は私のブログに先発します
Windowsでのシミュレーションでは、pythonは一般的に
実は最初は他の人が書いたプロジェクトを見つけて直接使いたいのですが、残念ながら実行に失敗し、一部の需要が満たされていないので、興味があればPyUserInputを直接試してみることができます.
マウスシミュレーション
これは基本的に
マウスの基本操作はpress(押す)、release(放す)、scroll(転がる、ここでは書かない)、move(移動)の基本操作に加えてclick(押す+放す)、drag(押す+移動+放す)に分けられます.
プレス押下
シミュレーションはスクリーン(x,y)の位置でマウスを押し、button=1は左ボタン、button=2は右ボタン
ここではクリック操作のみをシミュレートしており、マウスの位置は変更されていません.
リリース
操作同上
移動
ここではマウスを(x,y)の位置に設定するだけで、アニメーションプロセスはありません(このコードを書いて考えても必要ないでしょう)
クリック
クリック=押す+放す
Dragドラッグ
ドラッグ=位置1押し+位置2放し
現在のマウス位置を取得
ここでは、
参考資料 PyUserInput autoops_for_win
Windowsでのシミュレーションでは、pythonは一般的に
win32api
を採用しているほか、C++なども同様の機能を実現できるが、pythonは簡潔で多く、Windowsに慣れていない人に適している.実は最初は他の人が書いたプロジェクトを見つけて直接使いたいのですが、残念ながら実行に失敗し、一部の需要が満たされていないので、興味があればPyUserInputを直接試してみることができます.
マウスシミュレーション
これは基本的に
PyUserInput
と同じで、私の需要はそんなに複雑ではないので、部分だけを使って、興味があるのはソースコードPyUserInput/pymouseを見ることができますマウスの基本操作はpress(押す)、release(放す)、scroll(転がる、ここでは書かない)、move(移動)の基本操作に加えてclick(押す+放す)、drag(押す+移動+放す)に分けられます.
プレス押下
シミュレーションはスクリーン(x,y)の位置でマウスを押し、button=1は左ボタン、button=2は右ボタン
ここではクリック操作のみをシミュレートしており、マウスの位置は変更されていません.
import win32api
def press(x, y, button=1):
buttonAction = 2 ** ((2 * button) - 1)
win32api.mouse_event(buttonAction, x, y)
リリース
操作同上
import win32api
def release(x, y, button=1):
buttonAction = 2 ** ((2 * button))
win32api.mouse_event(buttonAction, x, y)
移動
ここではマウスを(x,y)の位置に設定するだけで、アニメーションプロセスはありません(このコードを書いて考えても必要ないでしょう)
ctypes
というライブラリを採用していますimport ctypes
def move(x, y):
ctypes.windll.user32.SetCursorPos(x, y)
クリック
クリック=押す+放す
def click(x, y, button=1):
press(x, y, button)
release(x, y, button)
Dragドラッグ
ドラッグ=位置1押し+位置2放し
def drag(x1, y1, x2, y2):
self.press(x1, y1)
self.release(x2, y2)
現在のマウス位置を取得
ここでは、
ctypes
にこの機能を実現できる関数がありますが、入力されたパラメータは少し奇妙で、入力された指定されたタイプのインスタンスであり、座標点を直接このインスタンスに返します.import ctypes
class Point(ctypes.Structure):
_fields_ = [("x", ctypes.c_ulong),
("y", ctypes.c_ulong)]
def get_pos():
point = Point()
ctypes.windll.user32.GetCursorPos(ctypes.byref(point))
return point.x, point.y
参考資料