プロが教える店舗&オフィスのセキュリティ対策術

UWSCを使って画像リンクをクリックするとき???

先日UWSCをダウンロードし、画像リンクを自動でクリックするスクリプトを作りました。
インターネット上で、商品を選んで「予約購入する」という画像リンクをクリックしたいのですが

Ifb CHKIMG("予約購入する.bmp") = TRUE THEN
  BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y)
Endif

のように作っても全く動きません。
UWSC40ファイルの中に予約購入する.bmpを保存してます。

うーん一体どうして?昨日から調べているけど全くわかりません。
回答よろしくお願い致します。

A 回答 (7件)

別の内容になってきてしまうのでこれ以上のことは別スレたててね


ウィンドウタイトルを取得してアクティブかさせてPageDownキーの入力を追加してみました

OPTION EXPLICIT
Dim x_max,y_max,TITLE,STEP_END
Dim i,id
x_max=1000 //検索範囲x方向最大
y_max=1000 //検索範囲y方向最大
TITLE="Firefox" //ウィンドウのタイトル
STEP_END=3 //pagedownを繰り返す数

id=GETID(TITLE)
MSGBOX("画像認識")
FOR i=0 TO STEP_END STEP 1
ifb CHKIMG(".\question.bmp",0,0,0,x_max,y_max,0,IMG_MSK_BGR4)
CTRLWIN(id,ACTIVATE)
BTN(LEFT, CLICK,G_IMG_X, G_IMG_Y)
MSGBOX("画像ありました")
else
 MSGBOX("画像なし")
Endif
CTRLWIN(id,ACTIVATE)
KBD(VK_NEXT,CLICK)
NEXT
    • good
    • 0
この回答へのお礼

これで自動予約ができるようになりました☆
ありがとうございます。

な・・のですが、最後に1つだけ質問させてください。
たまにページ2のほうでプログラムが止まる時があります。
ページダウンしなかったり、ページダウンしても画像を見つけてくれなかったり・・。
マウスは動かないので、クリックがずれているとかではなくて
画像を見つけてないんだと思います。1ページ目は問題ありません。
よろしくお願い致します。


OPTION EXPLICIT
Dim x_max,y_max
x_max=1000 //検索範囲x方向最大
y_max=1000 //検索範囲y方向最大
ifb CHKIMG(".\予約.bmp",0,0,0,x_max,y_max,0,IMG_MSK_BGR4)
BTN(LEFT, CLICK,G_IMG_X+86, G_IMG_Y+27)
Endif

ACW(GETID(ページ2)

BTN(LEFT,CLICK,505,245,20)
KBD(VK_NEXT,CLICK,40)
KBD(VK_NEXT,CLICK,40)
sleep(0.1)
ifb CHKIMG(".\OK.bmp",0,0,0,x_max,y_max,0,IMG_MSK_BGR4)
BTN(LEFT, CLICK,G_IMG_X+42, G_IMG_Y+10)

Endif

お礼日時:2010/09/03 00:42

>OPTION EXPLICIT


>Dim x_max,y_max
これは変数を明示的に表記する方法なだけなんで別に消しても大丈夫ですよ。

>ACW(GETID(ページ2)
これはなにでしょうか・・・
ACWはページの状態(大きさや位置)を変更するものですが・・・
ACW( ID, x, y, [幅, 高さ, ms] )
GETID()の部分はいいのですがその後のパラメータとACWの関数の括弧閉じるがありません。

>ifb CHKIMG(".\予約.bmp",0,0,0,x_max,y_max,0,IMG_MSK_BGR4)
>BTN(LEFT, CLICK,G_IMG_X+86, G_IMG_Y+27)
>Endif

>ACW(GETID(ページ2)
>BTN(LEFT,CLICK,505,245,20)
ページ1から2に移るのかな?それだと間にSleepで時間を入れておかないとブラウザの処理がおいつかないことがあります
    • good
    • 0
この回答へのお礼

最後まで回答ありがとうございます。

ページ2は晒すと若干まずいので、変えました。
SLEEPですねー。ありがとうございます。

もし答えられたら答えていただきいのですが
3回に1回は再生しても全く動かないとき、動きだすのが遅いときがあります。

それはなぜなのでしょうか??
本当に最後にすみませんがよろしくお願い致します。

お礼日時:2010/09/04 20:19

画像の位置はスクリプトの場所とおなじで画像の色識別範囲に幅をもたせてみました。


画像検索範囲は自分で変えてください。
jpegしかアップできないようなので画像変換かあたらしく画像用意してください・・・

OPTION EXPLICIT
Dim x_max,y_max
x_max=1000 //検索範囲x方向最大
y_max=1000 //検索範囲y方向最大
MSGBOX("画像認識")
ifb CHKIMG(".\question.bmp",0,0,0,x_max,y_max,0,IMG_MSK_BGR4)
BTN(LEFT, CLICK,G_IMG_X, G_IMG_Y)
MSGBOX("画像ありました")
else
 MSGBOX("画像なし")
Endif
「UWSCを使って画像リンクをクリックする」の回答画像5
    • good
    • 0
この回答へのお礼

わかりましたっ!!

オンマウスのときに微妙に色が白く変わるせいで、その白く変わった画像を保存していたせいでした。
おかげさまで画像認識できました・・!!

ありがとうございます☆

ちなみにたとえばボタンがしたのほうにあってスクロールしないと見つからない場合
そのページ内を探すときはどうしたら良いんですかね??

お礼日時:2010/09/02 23:25

#2です


あと画像に余白部分とかないですよね?
余白部分のところでパターンが一致しないのでみつけれてない可能性もあります
そのような場合は、画像を加工する必要があります。
具体的には単に余分な部分をぬいた画像をトリミングしてくりぬいちゃえばいいだけです。

以下余談
私の場合はネットのログイン操作を画像認識ではなく、IE制御で行っております。
    • good
    • 0
この回答へのお礼

余白とかでウーーーーンと考えたところオンマウスのせいでは???

と思い別の画像で試してみたらできましたー。大変おさわがしました。
IE制御ググってみたけどかなり使えそうですね!

フリーソフトなのでしょうか?できれば使ってみたいと思います☆

お礼日時:2010/09/02 23:40

画像の置き場所ですが、chkimgで指定する時にパスを一切付けなかったら、それはスクリプトと同じフォルダにあるという意味になります。

少なくとも、私のところではそれで動いています。今の話からでは、スクリプトがどこにあるかが解らないため、exeと同じ場所で正解かどうかは不明です。

あと、どこでうまくいっていないのかを調べる必要もあるでしょう。画像を見つけてなければどうしようもないので、ifbの中にmsgbox("あった")などというテストメッセージを入れておき、見つけたかどうかを調べます(この方法はデバッグ時に非常に役に立ちます)。また、画像で処理する場合は1ドットでも違っていたら、またパレットの値が1でも違っていたら、もう別物と言うことでchkimgでは見つけられませんので、それも注意が必要です。パレットに関しては、chkimgの引数で幅を持たせられるため、それで回避できますが。

画像は見つけているけどうまく動かないのなら、No2さんの言う「もう少し画像の真ん中よりをクリックする」ようにしないとダメでしょう。「予約購入する.bmp」の幅と高さはあらかじめ調べておけるわけですから、G_IMG_X,G_IMG_Yに「予約購入する.bmp」の幅・高さを半分にしたものを足せば、ど真ん中をクリックできるので、より確実に動きます。

今回は多分大丈夫だろうと思いますが、chkimgはあまり小さい画像は見つけられないようです。縦あるいは横が16ドット以上ない画像は使えないと考えておいた方が確実です。

この回答への補足

そもそもCHECK関数でその画像がきちんと表示されているのかな?と思って

ifb (CHKIMG(画像名, 0, 左上X, 左上Y, 右下X, 右下Y)
MSGBOX("画像ありました")
MSGBOX("画像の左上位置は(" + G_IMG_X + ", " + G_IMG_Y + ")です")
endif

これを使ったのですが、画像名のところに予約.bmpを入れてもおかしな変数ですという表示がでてしまいます。もー泣きたいですね。
このOKWAVEの画面ですと質問するというボタンをクリックするというスクリプトを作りたいのに・・。
わからない。

補足日時:2010/09/02 19:18
    • good
    • 0
この回答へのお礼

ありがとうございます。

まだできません・・・。画像は172×54なので87、27をそれぞれたしました。
画像の保存手順ですが、ネットのページ上で右クリック、画像を保存で合ってますよね?
それをBMP形式に変換して同じフォルダ内に保存しているのですが・・・。
ウーンメッセージが表示されません。
かといって予約.bmpが見つかりませんとの表示もでません。一体なぜでしょうか?
上司からすぐにやるようにと言われてまして非常に困ってます><

ifb CHKIMG(".\予約.bmp",-1)
   x=G_IMG_X // 画像の座標をxへ代入
y=G_IMG_Y // 画像の座標をyへ代入
MSGBOX("ありました")
   BTN(LEFT, CLICK, x+87, y+27) 
 Endif

お礼日時:2010/09/02 18:47

#1さん時間がなくても実行できますよ


optionの時間は実行されるまでの時間なのでクリックしている時間ではありません。
何も指定しなかった場合、すぐさま実行されます

質問に対しての回答ですが、
画像ファイルはどこに保存されているでしょうか?
uwscの実行ファイルと同じ場所でしょうか?
たしか使った記憶では
実行ファイルからの相対位置を指定しなければならなかった気がします。
(UWSCのスクリプトファイルからの位置ではない)

それと
>BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y)
のままでは画像の端っこをクリックするためクリック判定がミスする可能性もあります
CLICK,G_IMG_X+5,G_IMG_Y+5などすこし画像の真ん中よりに設定するほうがいいと思います
    • good
    • 0
この回答へのお礼

画像は同じフォルダに保存しております。
再生を押しても全く動く気配がなく、どうしてできないのかぜんぜんわかりません・・。
たとえばインターネット上のロゴでも同じですよね?
ロゴの画像をBMP保存して、以下のプログラムを組むと・・。
だというのにぜんぜんワカラナイ。最初はクリックで座標を覚えさせてうまくいったのですが
画面の大きさがそのときどきで変わるため、画像リンクをクリックするようにしました。
TABキーでクリックもできるのですが、微妙なズレがあり断念・・。

もう一度よろしくお願い致します。



ifb CHKIMG(".\予約.bmp",-1)
   x=G_IMG_X // 画像の座標をxへ代入
y=G_IMG_Y // 画像の座標をyへ代入
   BTN(LEFT, CLICK, x+5, y+5, 250) 
 Endif

お礼日時:2010/09/02 17:11

作成例



 ifb CHKIMG(".\新聞.bmp",-1)
   x=G_IMG_X // 画像の座標をxへ代入
y=G_IMG_Y // 画像の座標をyへ代入
   BTN(LEFT, CLICK, x, y, 250) 
 Endif
   250msあいだクリックする

   CLICKする時間が書いてないからそれは動きません
    • good
    • 0
この回答へのお礼

ありがとうございます。

コピペして実行してみましたがうまくいきません・・?
画像は「予約.bmp」でプログラムと同じフォルダに保存していますが・・

なぜでしょうか?

お礼日時:2010/09/02 17:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています