🖱️
Pythonでマウスの移動、クリック、スクロールを個別に無効化(pynputライブラリ)
まえがき
最初はPowerShellを使ったWindowsAPIのグローバルフックでマウス入力の無効化をしていましたが、他PCではPowerShellの実行ポリシーを変更しないと、外から持ってきたPowerShellスクリプトが動かせないことがわかり、Pythonで新たに作りました。
環境
・Windows10 64bit
・Python 3.7.5
・pynput 1.7.6
マウスの移動、クリック、スクロールを個別に無効化
それぞれのイベント内でsuppress_event()を呼べば無効化できます
from pynput import mouse
import time
# マウスポインタが移動した際に呼ばれるイベント
def on_move(x, y):
print("Block mouse move")
Mouselistener.suppress_event() # このイベントを無効化
# マウスボタンがクリックされた際に呼ばれるイベント
def on_click(x, y, button, pressed):
print("Block mouse click", button, pressed)
Mouselistener.suppress_event() # このイベントを無効化
# マウスホイールがスクロールされた際に呼ばれるイベント
def on_scroll(x, y, dx, dy):
print("Block mouse scroll")
Mouselistener.suppress_event() # このイベントを無効化
# マウス入力を監視するリスナー
Mouselistener = mouse.Listener(
on_move = on_move,
on_click = on_click,
on_scroll = on_scroll,
suppress = False
)
Mouselistener.start() # リスナー開始
time.sleep(5) # 5秒待つ
Mouselistener.stop() # リスナー終了
マウスの移動、クリック、スクロールをすべて無効化
mouse.ListenerのsuppressにTureを指定すればOK
from pynput import mouse
import time
# マウス入力を監視するリスナー (suppress = Trueですべてのマウス入力を無効化)
Mouselistener = mouse.Listener(suppress = True)
Mouselistener.start() # リスナー開始
time.sleep(5) # 5秒待つ
Mouselistener.stop() # リスナー終了
pynputドキュメント
Discussion