UWSCをBlueStacksと組み合わせて自動操作をよくさせているのですが、その際によく使う自作関数を置いておきます
目次
- 1.ターゲットウィンドウの特定用
- 2.遷移に成功するまでクリック1
- 3.遷移に成功するまでクリック2
1.ターゲットウィンドウの特定用
マクロ起動時などに対象のウィンドウを特定し各種変数に格納の上アクティブにする
FUNCTION GET_TARGET_WIN()
n = GETALLWIN()
PRINT "ウィンドウの数:" + n
FOR i = 0 TO (n - 1)
IFB STATUS(ALL_WIN_ID[i], ST_TITLE) = "BlueStacks"
WindowID = ALL_WIN_ID[i]
ACW(WindowID)
// chkimgx用各種設定
x1 = STATUS(WindowID, ST_X)
y1 = STATUS(WindowID, ST_Y)
x2 = STATUS(WindowID, ST_WIDTH)
y2 = STATUS(WindowID, ST_HEIGHT)
PRINT "WindowID: " + WindowID + "[" + STATUS(ALL_WIN_ID[i], ST_TITLE) + "]"
PRINT "左上の位置 X: " + x1 + " Y: " + y1
PRINT "ウィンドウの幅: " + x2 + " 高さ: " + y2
RESULT = WindowID
EXIT
ENDIF
NEXT
FEND
2.遷移に成功するまでクリック1
クリックに失敗しても成功するまでリトライさせる
次画面で表示される画像をキーにするパターン
引数
img1
クリック対象画像
img2
この画像がひっかかればクリック成功
threshold1
img1の閾値
threshold2
img2の閾値
retry
img1の画像を再検知してクリックするタイミング
retryの数値 x 0.1秒経過後再度クリックを試みる
ADDX
img1をクリック時にX軸方向に指定ピクセル分ずらす
ADDY
img1をクリック時にY軸方向に指定ピクセル分ずらす
PROCEDURE FNC_Click(img1, img2, threshold1, threshold2, retry, ADDX=0, ADDY=0)
IFB CHKIMGX(img1, WindowID, x1, y1, x2, y2, Detect_num, threshold1, Target_color)
BTN(LEFT, CLICK, G_IMGX_X + ADDX, G_IMGX_Y + ADDY, 500)
ENDIF
c = 0
REPEAT
SLEEP(0.1)
c = c + 1
IFB c > retry
c = 0
IFB CHKIMGX(img1, WindowID, x1, y1, x2, y2, Detect_num, threshold1, Target_color)
BTN(LEFT, CLICK, G_IMGX_X + ADDX, G_IMGX_Y + ADDY)
SLEEP(0.5)
ENDIF
ENDIF
UNTIL CHKIMGX(img2, WindowID, x1, y1, x2, y2, Detect_num, threshold2, Target_color)
FEND
3.遷移に成功するまでクリック2
クリックに失敗しても成功するまでリトライさせる
対象画像がなくなるまでクリックさせるパターン
引数
img
クリック対象画像
threshold
imgの閾値
retry
img1の画像を再検知してクリックするタイミング
retryの数値 x 0.1秒経過後再度クリックを試みる
ADDX
img1をクリック時にX軸方向に指定ピクセル分ずらす
ADDY
img1をクリック時にY軸方向に指定ピクセル分ずらす
PROCEDURE FNC_Click2(img, threshold, retry, ADDX=0, ADDY=0)
IFB CHKIMGX(img, WindowID, x1, y1, x2, y2, Detect_num, threshold, Target_color)
BTN(LEFT, CLICK, G_IMGX_X + ADDX, G_IMGX_Y + ADDY, 500)
ENDIF
c = 0
REPEAT
SLEEP(0.1)
c = c + 1
IFB c > retry
c = 0
IFB CHKIMGX(img, WindowID, x1, y1, x2, y2, Detect_num, threshold, Target_color)
BTN(LEFT, CLICK, G_IMGX_X + ADDX, G_IMGX_Y + ADDY)
SLEEP(0.5)
ENDIF
ENDIF
UNTIL !CHKIMGX(img, WindowID, x1, y1, x2, y2, Detect_num, threshold, Target_color)
FEND
