Openai/695cbd46-d550-8011-b329-0231c60d7394
This conversation was exported from ChatGPT[1]
gpt-5-mini edit
User: chkimgxでクリック3.bmpの画像Aをクリックして、そのあとは記述どおりのキーボード操作で動かしたいのですが、画像Aが2つ認識されてしまって、うまくいきません edit
chkimgxでクリック3.bmpの画像Aをクリックして、そのあとは記述どおりのキーボード操作で動かしたいのですが、画像Aが2つ認識されてしまって、うまくいきません このように同一画像Aが上下で並んでいて、上の画像Aのみをクリックしたいのですが、下の画像Aをクリックしてしまうことがあります。上の画像Aのみを優先的にクリックしたいのですがどのような記述にすればいいのでしょうか。
画像A
画像A
call chkimgx.uws startup_chkimgx()
id = GETID(GET_ACTIVE_WIN) x1 = STATUS(id, ST_X) y1 = STATUS(id, ST_Y) x2 = x1 + STATUS(id, ST_CLWIDTH) y2 = y1 + STATUS(id, ST_CLHEIGHT)
IFB CHKIMGX("クリック3.bmp",0,x1,y1,x2,y2,-1) Print "画像を検出、クリック実行" BTN(LEFT, CLICK, G_IMGX_X, G_IMGX_Y) SLEEP(0.01)
KBD(VK_RSHIFT, DOWN) SLEEP(1.000) KBD(VK_TAB) KBD(VK_TAB) KBD(VK_RSHIFT, UP) KBD(VK_ENTER)
KBD(VK_DOWN) SLEEP(0.01) KBD(VK_DOWN) SLEEP(0.01) KBD(VK_ENTER) SLEEP(0.01) KBD(VK_TAB) SLEEP(0.01) KBD(VK_ENTER)
Else Print "画像は見つかりませんでした。" Endif
shutdown_chkimgx()
Assistant: なるほど、問題は 同一の画像が複数認識される場合に、上の画像だけを優先してクリックしたい ということですね。 edit
なるほど、問題は 同一の画像が複数認識される場合に、上の画像だけを優先してクリックしたい ということですね。 CHKIMGX の戻り値 G_IMGX_X, G_IMGX_Y は通常 最初にヒットした座標 を返しますが、場合によって下の画像が先に認識されることがあります。これを防ぐには 検索範囲を制限する、または 座標の小さい方(上側)を選択する 方法があります。
あなたのコードだと全画面の範囲 (x1,y1)-(x2,y2) で検索しているので、上下どちらもヒットしてしまいます。
方法1:検索範囲を上半分だけに限定する edit
例えば上の画像Aだけを対象にしたい場合は、Y座標の下限を調整します:
x1 = STATUS(id, ST_X)
y1 = STATUS(id, ST_Y)
x2 = x1 + STATUS(id, ST_CLWIDTH)
y2 = y1 + STATUS(id, ST_CLHEIGHT) / 2 ; ← 下半分は検索しない
IFB CHKIMGX("クリック3.bmp",0,x1,y1,x2,y2,-1)
Print "画像を検出、クリック実行"
BTN(LEFT, CLICK, G_IMGX_X, G_IMGX_Y)これで 上半分だけ を対象にするので、必然的に上の画像が優先されます。
方法2:複数ヒットした場合に上側の座標を選択 edit
CHKIMGX は複数ヒットに対応できるオプションがあります。
- -1 は1つ目ヒット
- 0 以上の値で複数ヒットを返すことができます
IFB CHKIMGX("クリック3.bmp",0,x1,y1,x2,y2,0) ; 0 = 全て取得
; G_IMGX_X, G_IMGX_Y 配列にヒット座標が入る
minY = 99999
idx = -1
For i = 0 To G_IMGX_CNT-1
If G_IMGX_Y[i] < minY
minY = G_IMGX_Y[i]
idx = i
Endif
Next
; 上側の画像をクリック
BTN(LEFT, CLICK, G_IMGX_X[idx], G_IMGX_Y[idx])これで Y座標が一番小さい(上にある)画像 を優先クリックできます。
💡 ポイント
- 上半分に限定する → 簡単で確実
- 複数取得して上側を選ぶ → 画面構成が変わる場合でも柔軟
もし希望なら、このコードをあなたの全体スクリプトに組み込んだ完成版も作れます。 作ってほしいですか?
User: 方法1 完成版ください edit
方法1 完成版ください
Assistant: 了解です。では、上半分だけを検索対象にして、上の画像Aを確実にクリックする 方法1の完成版 を示します。 edit
了解です。では、上半分だけを検索対象にして、上の画像Aを確実にクリックする 方法1の完成版 を示します。
call chkimgx.uws
startup_chkimgx()
id = GETID(GET_ACTIVE_WIN)
x1 = STATUS(id, ST_X)
y1 = STATUS(id, ST_Y)
x2 = x1 + STATUS(id, ST_CLWIDTH)
y2 = y1 + STATUS(id, ST_CLHEIGHT) / 2 ; ← 上半分だけ検索
IFB CHKIMGX("クリック3.bmp",0,x1,y1,x2,y2,-1)
Print "画像を検出、クリック実行"
BTN(LEFT, CLICK, G_IMGX_X, G_IMGX_Y)
SLEEP(0.01)
KBD(VK_RSHIFT, DOWN)
SLEEP(1.0)
KBD(VK_TAB)
KBD(VK_TAB)
KBD(VK_RSHIFT, UP)
KBD(VK_ENTER)
KBD(VK_DOWN)
SLEEP(0.01)
KBD(VK_DOWN)
SLEEP(0.01)
KBD(VK_ENTER)
SLEEP(0.01)
KBD(VK_TAB)
SLEEP(0.01)
KBD(VK_ENTER)
Else
Print "画像は見つかりませんでした。"
Endif
shutdown_chkimgx()✅ ポイント:
- y2 = y1 + ST_CLHEIGHT / 2 として 上半分だけを検索範囲 に指定
- これにより、下の画像Aは無視され、上の画像Aのみクリックされます
- それ以外のキーボード操作は元のまま
希望であれば 検索範囲をもっと狭くして、微調整できるバージョン も作れます。 作ってほしいですか?
References edit
- ↑ "画像Aの優先クリック". ChatGPT. Retrieved 2026-01-07.