勘定奉行で、文字列の色が異なる場合のみ、ダブルクリックさせたい
使用環境: WinActor 6.0.1
アプリ: 勘定奉行
ふたつの処理で苦戦しています。
(1)修正する対象を選んでダブルクリック
以下の条件
・文字列が青い
・「共仕入」「課仕入」
理由として、
・青字で表示されるものは複数ある
・「共仕入」「課仕入」は、黒文字の項目にも表示される
ためです
最初は、
A案)
項目の青字の"その他"を画像マッチング(↑の写真ではバックは青ですが、
基本は白なので、白地に青字)し、見つかれば「共仕入」「課仕入」を
画像マッチングで探しクリック、を考えていましたが、青字になるものは10数以上
→画像マッチングを繰り返すことにより、エラー発生の可能性が高まる
B案)
文字色にこだわらず「共仕入」「課仕入」をすべてダブルクリックし
中に入ってから修正対象かどうかを判断させて戻る
→「共仕入」「課仕入」が多くの場合、非常に大量の閉じると開くを
繰り返すため、処理に時間がかかる
ため、困難かと思います。
(2)修正後、つぎの修正対象を探す
(1)で修正対象を選択し、修正処理(ほぼエミュレーションで可能でした)が
終わり戻ってきたのち、次の修正対象となる、
・青字
・「共仕入」「課仕入」が表示されている
項目までスクロールさせる処理を考えています。
修正処理が終わり、戻ってきた時点で選んでいた項目の背景色が変わるため、
画像マッチングでこの色の部分が見えなくなるまでスクロール もしくは
スクロールバーの"▼"を押下で進めようと考えていますが、問題は
ありますでしょうか。
また、最終行判定(これ以上処理・スクロールはしない)を判断させる
ための良い方法がありましたらご教示ください。
ご意見をいただけると助かります。
マスクにわたしが意図した効果はないのですね。
期待を持たせてしまい、失礼しました。
乗りかけた船なので、引き続きチャレンジさせてください。
画像マッチング+マウス移動+色判定を軸に考えました。
このスレッドの画像で試す限り成功します。
(1920×1080、Chrome200%拡大)
▼ 1行分の共仕入をクリアしたの図
※ ロジック上は、青バックと白バックの兼用
※「仕入」部分だけにマッチさせれば、共仕入と課仕入をまとめてカバーできそう
勘定奉行がデザイン/レイアウト/フォント/倍率等を一定に保てる想定です。
このロジックなら、行を基準とした一定の高さの中で、緑があり、かつ青がある領域からの相対位置をマウス操作できると思います。
緑→青の順で書きましが、青→緑が実際の判断に近いと思います。
青は比較的ポイントしやすい大きさの「カンマ」で捉えました。
緑から遠いので、相対座標の特定が少々面倒でした。
必ずしも4桁ある訳ではないと思います。
緑のすぐ下の「%」なら、相対座標を特定しやすいと思います。
色の領域が細いのが厄介かもしれません。

わたし自身は勘定奉行を使ったことがありません。
画像マッチングの出番っぽいですね。
ダブルクリック
この絵なら意図通りにダブルクリックできますか?
- マスク範囲(外側)と(内側)を最適に組み合わせる
- 高めのマッチ率で(共仕入+課仕入)×(青バック+白バック)分の4パターン
(条件分岐を組み合わせて「いずれかがマッチしたら」を判定) - もしくは低めのマッチ率で、1つの絵で全部をカバーできるポイントが見つかるかも
スクロール
わたしも同じように作ると思います。
PageDownを活用すると、より効率的かもしれません。
最終行
最下部に特有の絵があれば識別できそうです。
ノブが最下部に達した絵は一定ですか?
ノブの下側1/4から半分くらいとフレームが接触している絵ならブレはほぼなさそうです。
1ページの表示行数と、1行の高さが一定なら、PageDownの回数も一定かもしれません。

横から失礼します。気になったので教えてください!
マスク範囲は、画像マッチングをした画像の見られては困る部分を隠すために使用するものだと思っていたのですが、設定することによってマッチ度が上がるんですかね?
そうなら自分が今使ってるシナリオにも使えると思って質問させて頂きました!

kazuさん
WinActor_操作マニュアルの画像マッチングの項目には以下の記載があります。
—————マニュアルの記載—————
マッチング画像として指定した領域をマスクすると、正常に画像認識されません。マッチング
画像とマスク範囲は重ならないように配置してください。
—————マニュアルの記載—————
マッチングの範囲や、マッチ率などの調整しだいではうまくいくかもしれないですが、
基本的には推奨される方法ではないようです。
※検証したところ少なくともマッチ率が上がるということはなさそうです。

マスク部分が除外される想定で提案しましたが、間違っていたようで失礼しました。
ペイントで加工しての白マスクや、半透明の背景色を重ねる加工等も、マッチ率によっては有効かもと考えたのですが、悪あがきの域を出ない気がしたので見送ります。
■■■(1)について
表を一度どこかのExcelに貼り付けてから行数を調べるアプローチはいかがでしょうか。
私の手元に勘定奉行を試せる環境が無いので具体的な方法はご提示できませんが、例えば、
【手順】
↓↓↓Excel貼り付け手順↓↓↓
①勘定奉行の表のどこかをクリックして「Ctrl+A」→「Ctrl+C」押下で表をコピー
②Excelを新規作成し、そこに「Ctrl+V」で表を貼り付ける
③Excelに色フィルターをかける(同時に「共仕入」等にもフィルターをかける)
④フィルタ後の各行に対し「Excel操作(カーソル位置の読み取り)」を実行して行番号を確認する事で勘定奉行の表の何行目が対象かを確認する
↓↓↓勘定奉行操作手順↓↓↓
⑤以下を繰り返す
「Excel操作(カーソル位置の読み取り)」→勘定奉行の対象の行に対し操作を行う→Excelに対してエミュレーションで「↓」キーを押下してカーソルを次の行に移動
④の確認方法は若干煩雑ですが、例えば、勘定奉行の表がExcelでは3行目から貼り付けられているとして、
フィルタ後にExcelで表示されている一番上の行が5行目なら、5-3=2で勘定奉行の表の一行目から2行下に対象の行がある事がわかります。
※勘定奉行の一行分がExcelの一行に収まっている場合
■■■(2)について
上述の②で勘定奉行の表の全ての行が貼り付けられるなら、こちらの問題も同時に解決します。(Excel上の行数等で判断すれば良いため)

ご回答ありがとうございます。
表のコピー(全範囲指定)からExcelへのペーストが難しいのと、できたとしてもデータを修正後、勘定奉行へ入力する際の行指定が、ご教示いただいた方法では難しそうです。
ただ、Excel/CSVを作り、勘定奉行へデータを流し込む業務フローに変えれば、色フィルターの方法は使えそうなので、参考にさせていただきます。
文字色の取得ですが、恐らく専用のコントロールなので工夫がいると思います。
1つの方法ですが、文字が表示されるであろう座標を画像マッチング等で取得し、繰り返し処理の中で
X座標の値を変えながらライブラリ「色取得」を使って1ピクセルの色を横方向に捜査していきます。
下記の赤いラインのように色を取得していく
目的の青色が取得されたときにその項目をクリックするようにします。
選択項目が一番下になっている事の判別については、下記の回答は参考になりますでしょうか。

さっそくのご回答ありがとうございます。
ご教示いただいた方法だと、目的は達成できるかと思いますが、扱うデータが大量になった際の処理時間がネックになりそうです。
スクロール方法の記事は、参考にさせていただきます。
ありがとうございました。
シナリオの実例まで提示していただき、ありがとうございます。
さっそく試してみます。