2016-10-07 17 views
0

画面上の特定のピクセル値の座標を取得しようとしていますが、結果が得られないようです。私が得るエラーは "autoit.autoit.AutoItError:色が見つかりません"です。autoit.pixel_search戻り値の色が見つかりません

私のコードを確認するには、私が望む色のピクセルをマウスで動かしてください。これは必須ではなく、テストの一部に過ぎませんでした。私は2つのモニターを持っており、私の恐怖は、ピクセル検索で私が望んでいたモニターを区別できないということでした。だから私は基本的な "マウスの移動"をしたかどうかを知るautoitをテストするために。モニター1の画像に移動したので、モニターが正しいことが分かりました。

"autoit.pixel_get_color"が私が望む値を取得できるかどうかをテストしました。(65281)。Windows Infoアプリケーションから提供された16進数ではなく、10進数を使用する必要があるかもしれません。

私は以下のコードでテストしましたが、これはSciTE - light(.au3ファイル)を使用したコードであり、正常に動作します。

$coord = PixelSearch(0, 0, 1434, 899, 0x00FF02) 

If Not @error Then 
    MsgBox(0, "X and Y are:", $coord[0] & "," & $coord[1]) 
EndIf 

私はpyautoguiとピクセルをつかんテストし、最終的に私はそれを行うことができますが、それはのAutoItのように「クリーン」ではありませんので、私は可能であればそれを避けるためにしようとしています。 Autoitには、私に色を示すすてきなウィンドウ情報画面があるので、スクリプトに数字を差し込むのは本当に簡単です。

私は現在Pythonで書いたコードです。

import autoit 

import pyautogui 

pyautogui.confirm('Press OK to start running script') 

autoit.mouse_move(374,608,10) # move mouse to where the color I want is located. 

pixelcolor = autoit.pixel_get_color(374,608) #get color of pixel 

pixelsearch = autoit.pixel_search(0,0,1434,899,0x00FF02) # search entire screen for color 

pixelsearch = autoit.pixel_search(0,0,1434,899,65281) # Tried using the value from the get_color, still same error. 

いずれかのアイデアはありますか?

+0

'autoit.mouse_move(374,608,10)'はマウスポインタでピクセルをカバーしますか? –

+0

いいえ、そうではありません。マウスが大きなボックスの中央に移動しているので、ピクセル検索では、カーソルがどこに来るかを調べる前に他の一致するピクセルが見つかるはずです。私もコードをコメントアウトし、安全性についてテストしましたが、それと同じエラーです。 – Thomas

+0

私は 'pyautoit'をインストールして、同じエラーが発生することを確認しました。 –

答えて

1

私は自分の問題を解決する方法を考え出しました。なぜそれが動作するのか、問題の原因はわかりませんが、ここでは解決策があります。

PixelSearchの正しい式は、PixelSearch(左、上、右、下)です。

数字を使って遊んだあと、pyautoitが(右、上、左、下)を使用しているように見えます。その数式で私の番号を差し込むと、3台目のモニターを除いて完全に動作します。

私の3番目のモニターは(左、上、右、下)で動作するようです。私はそれが100%確実ではなく、負の数(-1680,0、-3、1050)と関係があるかどうか疑問に思います。

私は仕事用コンピュータ(2台のモニタ)、家庭用コンピュータ(3台のモニタ)、およびノー​​トパソコンでこれをテストしました。すべてのシナリオで、(右、上、左、下)が働いた。

これは今後誰かを助けてくれることを願っています。

+0

驚くほど幸運なことに、実験を通して見つけることができました!私はPyAutoItのコードを見ていませんが、実際にパラメータの順序を乱すと、私はそれをバグと呼びます。 PyAutoGUIで同じ問題が発生していないという事実と一貫しています。それについて言えば、PyAutoGUIは3つ目のモニタで違った動作をするのと同じクォークを示していますか? –

関連する問題