• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UWSCでPEEKCOLORを使い指定ウィンドウ内に、指定したカラーコ)

UWSCでPEEKCOLORを使い指定ウィンドウ内に指定したカラーコードがあるか判別する方法

このQ&Aのポイント
  • UWSCでPEEKCOLORを使い指定ウィンドウ内に、指定したカラーコードがあるかを判別する方法を教えてください。
  • ACW(GETID("xxxxx"),880,0,800,600,0)やCHKIMG("xxxx.bmp",0)を使用して画像認識する方法はありますが、PEEKCOLORでのカラーコードの判別方法が分かりません。
  • x=G_IMG_Xという命令で指定ウィンドウ内の画像の座標を取得できますが、PEEKCOLORの場合はどのように記述すれば良いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#194317
noname#194317
回答No.2

>PEEKCOLORの後にBTN命令入れましたが、指定カラーコード以外の場所でも手当たり次第クリックしてしまってます。 それって、次みたいにしたってことですか?だったら当然そうなります。 ダメな例: For x=1 to 800  For y=1 to 600   If PeekColor(x,y)=探しているカラーコード Then Break 2   Btn(LEFT,CLICK,x,y)  Next Next 良い例1: For x=1 to 800  For y=1 to 600   If PeekColor(x,y)=探しているカラーコード Then Break 2  Next Next Btn(LEFT,CLICK,x,y) 良い例2: For x=1 to 800  For y=1 to 600   Ifb PeekColor(x,y)=探しているカラーコード    Btn(LEFT,CLICK,x,y)    Break 2   EndIf  Next Next

Origin_69
質問者

お礼

回答ありがとうございます。 まさにダメな例をやっていました。 良い例を試したところ、発見までに多少時間がかかるもののしっかりクリックしにいってくれました。 分かりやすい回答ありがとうございました。m(_ _)m

その他の回答 (1)

noname#194317
noname#194317
回答No.1

PEEKCOLOR関数の動作は、「ユーザーが指定した座標のカラーコードを返す」であり、「指定されたカラーコードが画面上のどこにあるかを返す」わけではありません。なのですげ~原始的に、探したい範囲をループでなめて自分で探すしかないですね。例えば以下のスクリプトを実行すると、xとyに見つかった座標が入っています。 For x=1 to 800  For y=1 to 600   If PeekColor(x,y)=探しているカラーコード Then Break 2  Next Next これを見て「じゃあ探したい色1ドットの画像を使ってChkImg関数で探せば一発じゃんか、俺って頭いい~!」と思った人は、ワナにはまります(苦笑)。ChkImg関数って、あまり小さい画像は見つけられないんですよね。経験上、縦横16ドット以上ない画像は見落としてしまうようです。(バージョンによって見つけられる大きさが変わるかも知れない) あとワナがもう一点あって、PeekColor関数はウィンドウIDが引数にありません。すなわち、デスクトップに見えているものしか探さないので、もし検索対象が別のアプリに隠されていたらそれは見つかりません。なので必ず事前に、Acw関数でアクティブにしておく必要があります。

Origin_69
質問者

お礼

回答ありがとうございます。 CHKIMGだと画像が小さすぎると反応しないし、少しでも画像に変化があると読み込みませんよね。 書かれた通りの文をエディタに書き込んで動かして見たのですが、画面左上からy600座標の地点までマウスカーソルが動いては画面左上に戻るのを繰り返します。 PEEKCOLORの後にBTN命令入れましたが、指定カラーコード以外の場所でも手当たり次第クリックしてしまってます。 ひょっとして、指定範囲内にカラーコードがあった場合クリックということであれば、指定カラーコードの部分をクリックするわけではないでしょうか?? 分かりにくい質問ですいません。

関連するQ&A