adbをUWSCからNoxに送り、タップすることには成功しているのですが、目当ての部分にタップを送ることが出来ません。
私のNoxの設定は通常起動時1280x720で起動しています。その時点でホーム画面にあるアプリの画像を保存してuwscのCHKIMGXでサーチをして座標を受け取りadbコマンドをNoxに送りそのアプリの起動は確認出来たのですが、そのアプリを起動するとウィンドウサイズが558x1020くらいになり同じようにクリックしたい画像を保存してから実行しても画像の認識は成功しているのですが、別の場所をタップしてしまいます。いろいろ試してみた結果xy座標にそれぞれ+150したら一つ目の画像はクリックに成功しました。ですが、次の画像は+150では成功しませんでした。(150から+-20とかでやればもしかしたら成功するかもしれませんが試していません。成功したとしても座標が100以上も離れているのがとても気になります)
私の考えではウィンドウサイズは558x1020と取得できるがadbで送る指示としてはだいぶ別のサイズなのかな?と思っているのですが原因、対処法等教えていただけませんか?
下記に使用しているUWSC文を書いておきます。(必要だと思う部分だけ抜粋しましたのでもしかしたら重要な部分が抜けてるかもしれません)
-------------A.uws-----------
call B.uws
getWindow("NoxPlayer")
while true
imageXClick2(pass+"test.bmp")
imageXClick2(pass+"close.bmp")
wend
--------------------------------------
--------------B.uws----------
public winid = ""
public winsizeX = -9999
public winsizeY = -9999
public windowflamesize = 32
public pass = "C:\aaaa\bbbb\ccc\" //適当に差し替えてます
//ウインドウ情報取得とウィンドウ指定
procedure getWindow(name)
winid = getid(name) //ゲームウィンドウを名前で検索して取得
print "ウィンドウIDを取得しました。"
print "ID.NOは" + winid
winPosX = STATUS(winid,ST_X)
winPosY = STATUS(winid,ST_Y)
winsizeX = STATUS(winid,ST_WIDTH)
winsizeY = STATUS(winid,ST_HEIGHT)
print "位置X 位置Y 幅 高さ"
print winPosX + " " + winPosY + " " + winsizeX + " " + winsizeY
mouseorg(winid,MORG_DIRECT,MORG_FORE)
fend
//指定画像が見つかるまで待機
procedure imageXSearch(image)
repeat
sleep(0.1)
until CHKIMGX(image,winid,0,0,winsizeX,winsizeY,1,3)
fend
//指定画像が画面上に出たら座標をクリック
procedure imageXClick2(image)
//指定ファイルが見つかるまで待機
imageXSearch(image)
cmd_x = G_IMGX_X +150
cmd_y = G_IMGX_Y +150
CMD = "cd /d D:\Program Files\Nox\bin & nox_adb shell input touchscreen tap " + (cmd_x) + " " + (cmd_y)
DOSCMD(CMD)
fend
----------------------------------------------------------------
No.2ベストアンサー
- 回答日時:
ゴメン。
質問文の例が加算してたので、それに倣っちゃった。
> winPosXとwinPosYはウィンドウの位置の座標が入ると認識しているのですが、
その通りでウィンドウの左上隅の座標が入るハズなので、スクリーン座標からこれを引き算すると、クライアント領域の座標になるハズ。
cmd_x = G_IMGX_X - winPosX + 20
cmd_y = G_IMGX_Y - winPosY + 30 // 対象ウィンドウにメニューとか表示されるなら、その分ズラす。
--
図とか描いたり、計算した位置をPrintしてみるのが良いかも。
@IT > Insider.NET > .NET TIPS > スクリーン座標←→クライアント座標の変換を行うには?
https://www.atmarkit.co.jp/fdotnet/dotnettips/37 …
スクリーン座標とクライアント領域のずれはUWSCのmouseorg()で解消されていると思いますので、私の解釈が間違えていなければwinPosXとwinPosYは不要じゃないかなと思うのですが・・・
ウィンドウの位置を動かして実行を繰り返してみて+150したものですとしっかりとタップされるのでおそらくこの問題は大丈夫だと思います。
図を書いてprintで確かめる方法でどれくらいずれるのかを確かめたいと思います。普通は毎回同じ数値のずれであると思いますが、それであれば解決しますよね。
No.1
- 回答日時:
CHKIMGXが取得するのは画面の左上を(0, 0)とするスクリーン座標
adbで送る座標は対象ウィンドウの表示領域の左上を(0,0)とするクライアント座標
なので、対象ウィンドウの左上位置が変わるとズレるとか?
cmd_x = G_IMGX_X +winPosX + 20 // 20は見つかった画像の左上端でなくて、しっかり画像をクリックするためのマージン
cmd_y = G_IMGX_Y +winPosY + 20
とかでは?
回答ありがとうございます。
動作を試したところうまく動作することが出来ませんでした。
winPosXとwinPosYはウィンドウの位置の座標が入ると認識しているのですが、相対座標での座標指定はうまくいってるようですので、ウィンドウの位置によって座標が大幅にずれてしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- その他(プログラミング・Web制作) pythonで、tkinterとpillowの組み合わせ 2 2022/08/16 17:42
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- 生物学 脳の記録部位の集計方法について 1 2022/06/11 21:26
- HTML・CSS ブロックエディターで作りつつ、画像を挿入しつつ、画像にスタイルシートのコードを付ける方法はありますか 1 2022/08/23 18:46
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
MoEでUWSC操作をバックグラウンド実行出来ない
オンラインゲーム
-
UWSC画像認識で座標の位置がずれてしまいます。
その他(プログラミング・Web制作)
-
UWSC 非アクティブウィンドウへのキー入力
その他(ソフトウェア)
-
-
4
UWSC 画像判定と条件分岐について
その他(プログラミング・Web制作)
-
5
UWSCの終了の仕方
その他(プログラミング・Web制作)
-
6
uwsc画像認識のあいまい判定について
C言語・C++・C#
-
7
UWLSの記録でマクロを作成し使用していますが起動中に他の作業ができません。バックグラウンドで使うこ
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外付ディスプレイで AutoHotkey...
-
エクセルVBAで画像を貼り付ける...
-
C#で、画像の、指定した座標の...
-
Windows、自作の画像生データを...
-
画像の座標取得
-
マウスイベントが動かない
-
VBでクリックイベントを発生さ...
-
uwscについて、同一の画像(仮...
-
高さのあるクォータービューの...
-
Windows APIの線などの描画につ...
-
コントロール名とそのプロパテ...
-
VBでプリンター制御コードを記...
-
正確なサイズの図形を印刷させ...
-
HSP 自機狙い
-
マウス自動クリックソフトについて
-
VBで路線図(画像)の駅名をク...
-
UWSC画像認識で座標の位置がず...
-
Excel VBAで他アプリケーション...
-
「ご処理進めて頂きますようお...
-
【Excel】特定の文字を含むセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで画像を貼り付ける...
-
Excel VBAで他アプリケーション...
-
C#で、画像の、指定した座標の...
-
VBでクリックイベントを発生さ...
-
外付ディスプレイで AutoHotkey...
-
マウスイベントが動かない
-
VBAで ScreenToClient を使いたい
-
バナーにリンクを埋め込む方法
-
NoxPlayerとUWSCのadbの座標に...
-
UWSC画像認識で座標の位置がず...
-
VBでデスクトップ上のアイコン...
-
UWSファイルの編集?
-
UWSCのCHKIMG関数について
-
画像中のある座標でマウスオー...
-
VBA HTML要素または文字の座標...
-
JPGの画像ファイルの結合
-
マウスストーカーのようにカー...
-
Unityでピクセル情報を取得する...
-
マウス位置の色を得る
-
uwscについて、同一の画像(仮...
おすすめ情報
違う場所をタップしてしまう最初はこのソースでした
B.uwsのimageXClick2
cmd_x = G_IMGX_X +150
cmd_y = G_IMGX_Y +150
↓
cmd_x = G_IMGX_X
cmd_y = G_IMGX_Y -windowflamesize