UWSCでよく使う自作関数1

UWSC

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

コメント

タイトルとURLをコピーしました