0

マウスポインターがアイコンを変更し、マウスクリックを自動的に送信するタイミングを検出するプログラムを作成しようとしています。スクリーンショットを撮り、マウス アイコンの画像を解析するよりも、これを行うためのより良い方法はありますか?

編集: Windows 7 でプログラムを実行しています。画像処理を学び、簡単なフラッシュ ゲームを自動化しようとしています。ルール: 呪いの形が変わったら、クリックしてポイントを獲得します。

また、Python のどのイメージング モジュールを使用すると、画面全体だけでなく特定のサイズのスクリーンショットを撮ることができますか? この質問は新しいスレッドに移動しました:「特定のサイズのスクリーンショットを撮る

4

1 に答える 1

0

SetWindowsHookExWindows でこれを行うには、またはを使用してグローバル メッセージ フックをインストールしますSetWinEventHook。(別の方法として、Python を埋め込んでブラウザーまたはその Flash ラッパー アプリにフックする DLL を作成し、アプリ内からそれほど邪魔にならないようにすることもできますが、それははるかに手間がかかります。)

欲しいメッセージはWM_SETCURSOR. これは、カーソルが変更されたときに送信されるメッセージではなく、カーソルを変更するかどうかを尋ねるために Windows からアプリに送信されるメッセージであることに注意してください。したがって、IIRC では、aWH_CALLWNDPROCと aを配置して前後にWH_CALLWNDPROCRETチェックし、アプリがそうしたかどうかを確認する必要があります。GetCursorInfo

では、Python からこれを行うにはどうすればよいでしょうか。win32api正直なところ、パッケージの両方と友人をまだ知らない場合pywin32、および Windows メッセージ proc を何らかの言語で記述する方法をまだ知らない場合は、おそらくしたくないでしょう。あなたが望むなら、UNC Assist の (放棄された) pyHookプロジェクトから始めたいと思います。動かなくても、役立つソースコードが満載です。

また、 SO で[python] SetWinEventHookand を検索[python] SetWindowsHookExし、少しグーグルで検索する必要があります。そこにいくつかの例があります(私もここのどこかに書いた…)

pywinautoや などの高レベルのラッパー フレームワークを見ることができますがwinGuiAuto、私の知る限り、イベントをキャプチャするのに役立つものはありません。

必要なすべての機能を備えているが、Python モジュールには含まれていない他のツール、おそらくAutoItがあると思います。(たとえば、AutoIt には代わりに独自の VB に似たスクリプト言語があります。)

于 2013-10-31T02:44:25.670 に答える