
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
プログラミングを学べる!?進化している子どものおもちゃについて専門家に聞いた!
プログラミングを学べるレゴブロックがあることはご存知だろうか。レゴに限らず最近のおもちゃには、プログラミングの要素がどんどん取り入れられているようだ。「教えて!goo」にも、「プログラミングを学べる子供...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ペイント機能
-
UWSCで特定の文字をクリックす...
-
Excel VBAで他アプリケーション...
-
C言語でグラフ作成??
-
マウスイベントが動かない
-
マウスストーカーのようにカー...
-
UWSC画像認識で座標の位置がず...
-
エクセルで、日付を入力すると...
-
メルカリのメルカードで買い物...
-
「ご処理進めて頂きますようお...
-
VBA リストボックスをダブルク...
-
EXCEL VBA 複数のImageコントロ...
-
スマホF-51Bに緊急時情報画面で...
-
CloseとDisposeの違い
-
「PC Helpsoft Driver Updated...
-
VBAでCOPYを繰り返すと、処理が...
-
【VB】タブ切り替え時のイベント
-
Excel ラジオボタンのリセット...
-
決められた4つの座標をランダム...
-
VBA エンターキーでイベントに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAで他アプリケーション...
-
UWSC画像認識で座標の位置がず...
-
マウスカーソルの移動
-
外付ディスプレイで AutoHotkey...
-
エクセルVBAで画像を貼り付ける...
-
C#で、画像の、指定した座標の...
-
uwscについて、同一の画像(仮...
-
マウスイベントが動かない
-
エディットボックスの色変更に...
-
UWSCのCHKIMG関数について
-
ピクチャーボックスのスケール...
-
FORTRANのプログラミングについて
-
C言語でグラフ作成??
-
UWSCのプログラミングついて教...
-
VBでクリックイベントを発生さ...
-
VBでデスクトップ上のアイコン...
-
Visual Studio .NET 2003:右揃...
-
UWSCのPEEKCOLORについての質問
-
コントロール名とそのプロパテ...
-
LineTo,MoveToについて
おすすめ情報
違う場所をタップしてしまう最初はこのソースでした
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