- 締切済み
UWSCによる色識別がWin7だとできない
UWSCでPEEKCOLORを使い、指定した座標の色を識別して、キーを押すといった動作をさせたいのですが、 XPのPCだと正常に動作するのに、Win7のPCになると何も動作が起きず上手くいきません。 同じスクリプト文を使用しているにも関わらず、Win7だと動作起きないのは、色を識別する方法が異なるのでしょうか? 動作文は以下の通りです。 While True ifb PEEKCOLOR(198,68) = $845539 then Kbd(VK_F4,DOWN,30) Kbd(VK_F4,UP,30) else Endif ifb PEEKCOLOR(198,56) = $845539 then Kbd(VK_F5,DOWN,30) Kbd(VK_F5,UP,30) else Endif WEND 色を調べる方法として、WinXP・7共に次のものを使用しました。 OLD_X = 0 OLD_Y = 0 OLD_COLOR = 0 while TRUE WIN_ID = GetID(GET_ACTIVE_WIN) MOUSEORG(WIN_ID) BASE_X = STATUS(WIN_ID, ST_X) BASE_Y = STATUS(WIN_ID, ST_Y) ifb GETKEYSTATE(VK_LBUTTON) then NEW_X = G_MOUSE_X; NEW_Y = G_MOUSE_Y OFF_X = NEW_X - BASE_X; OFF_Y = NEW_Y - BASE_Y c=PeekColor(OFF_X, OFF_Y) ifb NEW_X <> OLD_X OR NEW_Y <> OLD_Y OR c <> OLD_COLOR then PRINT "X="+(OFF_X)+"/Y="+(OFF_Y)+"/赤="+(c and $FF)+"/緑="+((c and $FF00)/$100)+"/青="+((c and $FF0000)/$10000)+"/BGR値=$"+FORMAT( c,6,-1 ) endif OLD_X = NEW_X; OLD_Y = NEW_Y; OLD_COLOR = c endif sleep(1) wend 色々調べてみましたが、やはりWin7でのみ動作しなくて困っています。 原因が分かる方、助言お願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- annys2000
- ベストアンサー率48% (255/523)
関連するQ&A
- UWSCのPEEKCOLORについての質問
「とある座標x」の「色」が「a」であった場合「○○をする」 違う場合は何もしないというマクロを組む場合は下記のようにやればできるのですが ----------------------------------------------------------------------- ifb PEEKCOLOR(「とある座標x」) = ($「a」) then //「とある座標x」の「色」が「a」であった場合 ACW(GETID("BpOnline__0.02.UWS - メモ帳","Notepad") //「○○する(ここではメモ帳をアクティブに)」 else //「色がaでないなら何もしない」 Endif ------------------------------------------------------------- 「とある座標x」の「色」が「a」であり なおかつ「とある座標y」の「色」が「b」であった場合「○○をする」 違う場合は何もしない (両方の条件を満たしている場合意外は何もしてほしくない) というようにしたい場合はどのようにしたらいいのでしょうか 自分なりに考えて下記のようにやってみたのですが上のものと同じ挙動をしてしまいます。 ---------------------------------------------------------------- ifb PEEKCOLOR(「とある座標x」) = ($「a」) then //「とある座標x」の「色」が「a」であった場合 ifb PEEKCOLOR(「とある座標y」) = ($「b」) then //「とある座標y」の「色」が「b」であった場合 ACW(GETID("BpOnline__0.02.UWS - メモ帳","Notepad") //「○○する(ここではメモ帳をアクティブに)」 else //「色がaでないなら何もしない」 Endif else //「色がaでないなら何もしない」 Endif -------------------------------------------------------------------------- ifb PEEKCOLOR(「とある座標x」) = ($「a」) and PEEKCOLOR(「とある座標y」) = ($「b」)then //「とある座標x」の「色」が「a」であった場合 and 「とある座標y」の「色」が「b」であった場合 ACW(GETID("BpOnline__0.02.UWS - メモ帳","Notepad") //「○○する(ここではメモ帳をアクティブに)」 else //「色がaでないなら何もしない」 Endif ------------------------------------------------------------------- ifb PEEKCOLOR(「とある座標x」) = ($「a」) and PEEKCOLOR(「とある座標y」) = ($「b」)then これのandをorにしても同じでした。 どうかご教示くださいませ
- ベストアンサー
- その他(プログラミング・開発)
- UWSCのスクリプトについて
画像Dを認識したら画面上に画像Bがあっても 処理Bを実行しない為にはどうしたら良いでしょうか。 -------- while True BTN(LEFT,click,150,10,110) //処理A Sleep(2) ifb CHKIMG("A.bmp") x=G_IMG_X y=G_IMG_Y BTN(left,click,x,y,110) Sleep(1.5) endif Ifb ChkImg("B.bmp") //処理B BTN(LEFT,click,1120,90,110) Sleep(1) KBD(VK_return,DOWN,30) endif ifb CHKIMG("C.bmp") //処理C x=G_IMG_X y=G_IMG_Y BTN(left,click,x,y,110) Sleep(1.5) wend --------
- ベストアンサー
- その他(プログラミング・開発)
- uwscについて
画像認識で質問があります。 画像Aがあった場合画像Aをクリックするのは出来るのですが 画像Aがあった場合画像Bをクリックする場合どのようにすればいいのでしょうか? IFB (CHKIMG("A.bmp")=TRUE) THEN SLEEP(0.3) //B、C出現までの間を調整 IFB (CHKIMG("B.bmp")=TRUE) THEN BTN(LEFT, CLICK, G_IMG_X, G_IMG_y) ELSEIF (CHKIMG("C.bmp")=TRUE) THEN BTN(LEFT, CLICK, G_IMG_X, G_IMG_y) ENDIF しらべてこのとおりやってみたら 最初のIFBに対してENDIFがないと言われてうまくいきません ちょっと調べたのですが分からなかったので助けてください
- 締切済み
- その他(プログラミング・開発)
- UWSCで画像が消えた場合に動作せるやり方
ある画像 aaa.bmp だったとします この画像があるときは なにもせず なくなった場合(画像が消えるまで繰り返す)に ENTER ENTER と 押すようなスプリクト を 書いて頂けないでしょうか? While true if GETKEYSTATE(VK_ESC) then exit If ChkImg("aaa.bmp")=TRUE ←画像があるとき? Ifb and ChkImg("aaa.bmp")=FALSE ←画像が消えた時? kbd(VK_ENTER) kbd(VK_ENTER) endif wend なんとか こんな感じまで 出来ました よろしくお願いいたします
- 締切済み
- Windows XP
- UWSC 用のマクロコードを教えてください
UWSC を使ったプログラムを作成しています。 黄色い部分の push ボタンを左クリックすると 赤いラインが上昇します。 それを決められた色のところまで自動で動くようにしたいのです。 今ある赤色ラインで止めたいのです。 黄色いpushは 10種類ほどあり 色が多数あります。 画像を習得してどの画像にも対応できるようにしたい。 赤いラインを止める場所を 色を指定して止める RGB値を設定して 毎回ここでクリックが外れるような設定 現在設定している状況は 1組のみの設定なのでこれを多数に対応できるように組み替えたいのです。 ************************************************ RGBcolor(x2+17,y4+40) ifb R >255 and G < 255 and B < 51 then u = true elseif R > 100 and G < 100 and B > 177 then u = true endif RGBcolor(x2-17,y4+40) ifb R >255 and G < 255 and B < 51 then u = true elseif R > 100 and G < 100 and B > 177 then u = true endif ifb peekcolor(x2,y4-100) = 0 then ifb chkimg("push1.bmp",-1,0,0,yoko-10,tate-10,1) then elseif chkimg("push01",1,0,0,yoko-10,tate-10,1,IMG_MSK_BGR2) then elseif chkimg("push02.bmp",1,0,0,yoko-10,tate-10,1,IMG_MSK_BGR2) then endif x4 = G_IMG_X + 6 //押すの上端 y4 = G_IMG_Y - 1 //押すの上端 RGBcolor(x4,y4) ifb R>255 and G>200 and G<255 and B>30 and B<70 then turiage() endif endif *************************************************** この部分を変更したいのですが よくわからなくて。 どうかお力をお貸しください。
- ベストアンサー
- その他(プログラミング・開発)
- UWSC 非アクティブウィンドウへのキー入力
こんにちは。「MapleStory」というゲームで非アクティブ状態でもキー情報が入力されるようにしたいのですが・・・ネットでいろいろ調べたところここまでたどり着きました。 while true if GETKEYSTATE(VK_ESC) then exit //ESCで終了 id = GETID("MapleStory","MapleStoryClass") ifb (ID < 0) MSGBOX("ウィンドウが見つかりません") exitexit //見つからなければ終了 endif hwnd = GETCTLHND(id, "MapleStoryClass") MOUSEORG(hwnd, 2) KBD(VK_A,DOWN,200) wend ↑のように書けば非アクティブでもAが入力されると思ったのですが、アクティブ状態でしか入力してくれません。 どのようにしたら良いのでしょうか?どなたかご教授お願いします。ちなみに調べたところクラスはMapleStoryClassの1つだけのようでした。
- ベストアンサー
- その他(ソフトウェア)
- UWSCのキーボード入力ですが、下記の通りでは、"natm"等になって
UWSCのキーボード入力ですが、下記の通りでは、"natm"等になってしまい、うまく入力されません。 Ifb ChkImg("bmp/test/natume.bmp") KBD(VK_N,CLICK,40) KBD(VK_A,CLICK,40) KBD(VK_T,CLICK,40) KBD(VK_U,CLICK,40) KBD(VK_M,CLICK,40) KBD(VK_E,CLICK,40) KBD(VK_ENTER,CLICK,40) Endif また、これでは記述する際に大変ですので、キーボード入力の箇所を1行に抑えること、あるいはこれよりも楽に記入する手段はないでしょうか? どうかよろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- UWSC 非アクティブでの動作
while true if GETKEYSTATE(VK_ESC) then exit // Escapeキーでスクリプト停止 ID = GETID("TEST.txt - メモ帳","Notepad") ifb (ID < 0) MSGBOX("ウィンドウが見つかりません") exitexit endif id = GETCTLHND("TEST.txt - メモ帳","Notepad"),"Edit","1") MOUSEORG(id,2) KBD(VK_S,DOWN,200) wend TEST.txtという名前のメモ帳に、最小化していたり、非アクティブな状態でも UWSCによるキー入力を送信したいのですが、上手くいきません・・。 実行させると 「式がおかしい or 型があっていない」 「13行目: id = GETCTLHND("TEST.txt - メモ帳","Notepad"),"Edit","1")」 と表示され、動いてくれません。 いろいろ調べてはみたのですが、解決できなかったので どなたかわかりやすく説明などして下さるとありがたいです。
- ベストアンサー
- その他(ソフトウェア)
- uwscでマクロ作成
1画像Aが見つかったらそこをクリック×1 2画像Bが出てくるので画像Bをクリック×2 3ある座標をクリック×1 4再度画像Bをクリック×7 まったくの初心者ですが このようなマクロを作りたく思い作ってみたのですがまったくできません。。 if GETKEYSTATE(VK_ESC) then exit ifb CHKIMG("画像A",0) BTN(LEFT, CLICK, x, y, 80) ENDIF ifb CHKIMG("画像B",0) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT,CLICK,176,399,100) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT, CLICK, x, y, 80) ENDIF このような感じです 画像はペイントで切り取ったものを使い、uwsファイルと同じ所に入れていますが違う所で引っかかるようです。
- 締切済み
- その他(インターネット・Webサービス)
- UWSCの画像認識について
質問させていただきます ifb CHKIMG("画像.bmp",) BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) endif これを複数の画像でやりたいときは ifb CHKIMG("画像.bmp",) BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) endif ifb CHKIMG("画像.bmp",) BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) endif のようにしないとだめなのでしょうか? それとも ifb CHKIMG("画像.bmp",) CHKIMG("画像.bmp",) CHKIMG("画像.bmp",) CHKIMG("画像.bmp",) BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) endif こんな感じにまとめる事はできるのでしょうか? 例として教えてもらえると助かります。 よろしくお願いします
- ベストアンサー
- その他(プログラミング・開発)