プロが教える店舗&オフィスのセキュリティ対策術

UWSCで自動化したい操作があります。
自分はプログラマでないのでどうか皆様の知恵をお借りできると嬉しいです。

やりたい操作は、添付の画像のような同じ形のマスが引き詰められた表で
最初は一番左のマスの中央をクリックし、とある処理を終わらせたら右隣のマスへ。
一番右までのマスでの処理が終わったら、下段の一番左のマスの中央をクリックし、とある処理へ…
とZ字型に繰り返していくスクリプトをUWSCで作りたいのです。
とある処理は無視していただいて、マスクリックの動作をうまくまとめたいです。
今のところ、画像のようにマスは横5x縦4で考えていますが、将来縦が増えそうなのでそこも考慮したいです。

※当該マスの中央から隣のマスのマスまで 50px
※当該マスの中央から下のマスの中央まで 100px

よろしくお願いします。

「とある表のマスをUWSCを使いZ字型に下」の質問画像

A 回答 (3件)

No2で提示したマクロは、マクロ起動後「右Shiftキー」を押した時のマウス位置を基準として


質問内容のZみたいな動きでクリックしていくマクロです。

一通りクリックし終わっても、UWSCを終了しない限り「右Shiftキー」を再び押せば
まったく同じ位置で同じ動作を行います。
難しい事は一切してないので、UWSCのヘルプ片手にすぐ中身は読み解けるかと思います。

長押し対策の SLEEP(0.1)について
 右Shiftキーを長めに押した場合、2,3回処理が平行して実行される可能性があるので
 それを防ぐ為にSLEEPを入れています。お好みで変更したらよいでしょう。

何で右Shiftキー
 たまたま。UWSCのヘルプに「仮想キー」の記載があるので好きなキーに変更するなり
 IFB GETKEYSTATE( VK_RSHIFT ) 略 を他のトリガに変えてしまうのも良いでしょう。
 UWSCは実行すると即時にマクロが走る為、自分で好きなタイミングで実行できるように
 利便性を考えて追加しただけです。

THREAD?
 特に意味はありません。ZClicker() とするだけでも良いです。
 (THREADでは無い方が、長押し誤爆は発生しないはず)

マウスクリックじゃなく何故DOWN,UP
 何の用途に使用するのか分かりません、仕事?ゲーム?
 後者の為でしたら、BTN(CLICK,略 はクリックとして認識されないケースが多く
 きちんとマウスのボタンを押した離したを再現する為にそうしています。

~こういう風に改造したい!
 自分で調べてやれ

以上です。
    • good
    • 0

なんか質問の絵の縦横比がおかしい気がしましたが、それは置いといて。


以下にお手軽なコードを示します。内容が理解できるようになったら弄るなりしてください。
それぞれの処理を関数化しています。ごっちゃになるので解説は別回答に。

PUBLIC CUR_X = 0
PUBLIC CUR_Y = 0
PUBLIC maxRow = 4 // 下方向を変更するならここ
PUBLIC maxCol = 5 // 横方向を変更するならここ
PUBLIC rowSize = 100 // マウスを動かす縦幅
PUBLIC colSize = 50  // マウスを動かす横幅

main()

PROCEDURE main()
 DIM initX
 DIM initY

 WHILE 1
  // 右Shiftキーが押されたら開始
  IFB GETKEYSTATE( VK_RSHIFT ) = TRUE THEN
   // 長押し対策
   SLEEP(0.1)
   // 最初のマウス座標を覚えておく
   IFB CUR_X = 0 AND CUR_Y = 0 THEN
    initX = G_MOUSE_X
    initY = G_MOUSE_Y
   ENDIF
   
   // 最初のマウス座標を開始基準にする
   CUR_X = initX
   CUR_Y = initY
   
   THREAD ZClicker()
   // 一通りループし終わったら次に右Shiftキーが押されるまで何もしない
  ENDIF
  SLEEP(0.1)
 WEND
FEND


PROCEDURE ZClicker()
 DIM row
 DIM col
 FOR row = 1 TO maxRow STEP 1
  FOR col = 1 TO maxCol STEP 1
   MouseClick(col, row)
   SLEEP(0.1) // 次のクリックまで0.1秒待つ
  NEXT

  // とある処理
  PRINT "とある処理 " + row + "行目"
 NEXT
FEND


PROCEDURE MouseClick(x, y)
 DIM targetX, targetY
 targetX = CUR_X + ( x - 1 ) * colSize
 targetY = CUR_Y + ( y - 1 ) * rowSize
 // 待ち時間10msecの間にマウス動かすとちょっとずれるかも
 BTN(LEFT, DOWN, targetX, targetY, 10)
 BTN(LEFT, UP, targetX, targetY, 10)
FEND
    • good
    • 0

UWSCで操作を記録するだけ。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!