
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
googlemapのタイル画像
-
クリックした点を中止に拡大・縮小
-
PHPでエクセルのグラフを作成ま...
-
コントロール名とそのプロパテ...
-
マウスストーカーのようにカー...
-
VB、VBSでのキーマクロ
-
UWSCのプログラミングついて教...
-
ひし形のあたり判定について
-
UWSC画像認識で座標の位置がず...
-
元の比率で画像を切り抜きする方法
-
エクセルVBAで画像を貼り付ける...
-
特定座標のRGB値取得について
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
switch の範囲指定
-
男性に対して、『女性への気遣...
-
Googleフォーム・複数人の申し...
-
Excelシート上のマクロを登録し...
-
エクセルVBAで、MsgBox やInput...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#で、画像の、指定した座標の...
-
UWSC画像認識で座標の位置がず...
-
C言語でグラフ作成??
-
Excel VBAで他アプリケーション...
-
VBA HTML要素または文字の座標...
-
uwscについて、同一の画像(仮...
-
VBでクリックイベントを発生さ...
-
エクセルVBAで画像を貼り付ける...
-
マウスイベントが動かない
-
UWSCのプログラミングついて教...
-
PostScriptについて
-
VBでデスクトップ上のアイコン...
-
UWSCのCHKIMG関数について
-
LineTo,MoveToについて
-
マウスカーソルの移動
-
UWSファイルの編集?
-
DirectX テクスチャの拡大
-
VBAで ScreenToClient を使いたい
-
高さのあるクォータービューの...
-
UWSCでPEEKCOLORを使い指定ウィ...
おすすめ情報
違う場所をタップしてしまう最初はこのソースでした
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