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

A 回答 (3件)
- 最新から表示
- 回答順に表示
No.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,略 はクリックとして認識されないケースが多く
きちんとマウスのボタンを押した離したを再現する為にそうしています。
~こういう風に改造したい!
自分で調べてやれ
以上です。
No.2
- 回答日時:
なんか質問の絵の縦横比がおかしい気がしましたが、それは置いといて。
以下にお手軽なコードを示します。内容が理解できるようになったら弄るなりしてください。
それぞれの処理を関数化しています。ごっちゃになるので解説は別回答に。
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- その他(ゲーム) 数独の解き方 4 2023/05/17 16:09
- 物理学 走行中の電車内の光の見え方について 3 2022/05/19 06:34
- 高校 〈 国語 質問 〉 作文などを書く際、 1番下の行に来たときは、 『 。 』 や『 」 』は文字と一 1 2022/05/08 17:26
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- クラフト・工作 木材のマス目と板目につきまして 2 2023/06/29 06:16
- au(KDDI) スマホで郵便番号などマス目のある文書に入力する時次のマス目へに変わる時、どの様に操作してますか?いち 3 2022/06/16 09:19
- その他(ホビー) 昔遊んだボードゲームを探しいます。 今か30年近く前、子供の時に母の実家に帰った時に家族みんなで遊ん 7 2022/07/26 19:18
- システム科学 全256種類の色パネルを100マス×1024マスに当てはめるとき何KBかの 考え方を教えて下さい 3 2022/06/26 16:13
- その他(ゲーム) 3×3ビンゴについて 1 2022/07/31 14:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA kernel32 の意味
-
VBSの処理中一旦処理を止めて再...
-
【C#】 あるイベントから別イ...
-
OSシャットダウン時の常駐アプ...
-
Application.ScreenUpdating=Fa...
-
「キャンセル」ボタン付きの処...
-
マウスのクリックを無視したい
-
thunderbirdのメッセージフィル...
-
VBスクリプトで「お待ち下さい...
-
エクセルVBAでクリップボード内...
-
ディアルコアPCにおけるCPU固定...
-
Excel VBA で処理中断(DoEvents...
-
Excel VBA 実行中に一瞬フリー...
-
終了処理が実行されない場合は...
-
Macターミナルで実行中のプログ...
-
recv関数でフリーズしてしまう
-
バックグラウンドのプロセスの...
-
sendkeysにてALT+CTRL+INSERTを...
-
デュアルCPUでのプログラミング...
-
非表示になったエクセルは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの処理中一旦処理を止めて再...
-
ACCESS側からEXCELの書式を設定...
-
メッセージボックスのボタン名変更
-
VBSで応答不要のメッセージボッ...
-
VBA kernel32 の意味
-
Excel VBA で処理中断(DoEvents...
-
VBA、UserFormを前面に出力して...
-
Application.ScreenUpdating=Fa...
-
MFCのワーカースレッドとUIスレ...
-
ASP.NETでのメッセージ画面を出...
-
「キャンセル」ボタン付きの処...
-
シャットダウン時のExcel強制終...
-
【C#】 あるイベントから別イ...
-
ボタンが押された事を検知する...
-
PostMessageの連続送信
-
VBA メッセージボックスを自動...
-
エクセルVBAでクリップボード内...
-
VCでウエイトをミリ秒でかけ...
-
ループを使わずに、特定時間に...
-
VB6 コマンドボタン クリック...
おすすめ情報