Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

マウスボタンのフック中にマウス操作をpyauto.Input.sendするとフリーズ #39

Open
crftwr opened this issue Mar 12, 2020 · 0 comments
Labels

Comments

@crftwr
Copy link
Owner

crftwr commented Mar 12, 2020

メールでいただいたバグ報告


マウスボタンのフック処理中に
マウス操作をpyauto.Input.sendすると、フリーズが起こってしまい、
解決できないため、連絡した次第です。

環境:
 OS:win10 Pro 1909
 pyauto:2020/03/08にGitHubからダウンロードしたもの
 keyhac:ver1.81

どうもマウスフックでボタンダウンをフックしてその処理中に
マウス操作をSendInputで送信するとフリーズが起きるようです。

ネットしらべると下記の記事が見つかりました。
「フックスレッドと同一スレッド内でSendInputすると、
Windows10でユニバーサルアプリが動作している場合には、フリーズが発生する。」

マウスジェスチャツールの作り方 - Qiit
https://qiita.com/rubyu/items/88b9f93b39951252a0c1
↑のページ内の「特定の条件下でフリーズする」という欄のリンク
https://qiita.com/rubyu/items/88b9f93b39951252a0c1#%E7%89%B9%E5%AE%9A%E3%81%AE%E6%9D%A1%E4%BB%B6%E4%B8%8B%E3%81%A7%E3%83%95%E3%83%AA%E3%83%BC%E3%82%BA%E3%81%99%E3%82%8B

pyautoに同梱されているsample/hook.py
にマウス操作を追記したものを添付してしています。
マウスのボタンダウンをフックして、pyauto.MouseLeftUpを送信していますが、
このhook.pyを実行して、クリックすると、onMouseDown1が表示されて数百ms
経過したのち、onMouseDown2が表示されます。
時間を空けて数回クリックしているとフック処理タイムアウトに引っかかって
マウスのフックがシステム側から強制的に外されてしまいます。

マウスを連続でクリックするとpythonのインタプリタがフリーズします。
タスクマネージャーからも終了できないため、PC再起動するしかない状況に
なりますので、ご注意ください。

コメントアウトしているKeyDown(ord('A'))のみにすると
フリーズが解消されます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant