
作りたい動作は特定のアプリケーションで「(1)F12を押す⇒(2)Alt+Pを押す⇒(3)70秒待機⇒(4)F12を押す((1)~(4)を無限にループ)(5)ESCキーでマクロを停止」です。特に座標の指定などありませんので一通り自分で挑戦してみましたが素人構成なのでうまく動作しませんでした。あれこれとしてみた結果、結局どういった風に組んでよいか分からず途方にくれています・・・。詳しい方がいらっしゃいましたらご教授ください。よろしくお願いします。
以下組んでみたスクリプト
ACW(GETID("使いたいアプリケーション"))
while TRUE
if GETKEYSTATE(VK_ESC) then exit
KBD(VK_F12,DOWN,77)
KBD(VK_F12,UP,77)
SLEEP(1)
sleep(72+random(15))
KBD(VK_F12,DOWN,77)
Print "休憩中"
wend

No.2ベストアンサー
- 回答日時:
このスクリプトには「(2)のAlt+Pを押す」の処理が入ってませんよ。
それに(5)の停止処理はその書き方だと停止することは非常にまれです。なぜならGETKEYSTATEは、スクリプトがそこを通った時にしか状態をチェックしないためです。なので、とりあえずこんな感じに直す必要があるでしょう。質問の(4)ですが、そのまま実装するとF12を押した後にまたすぐ(1)でF12を押すことになり、無駄だと思ったので入れていません。winid=GETID("使いたいアプリケーション")
While TRUE
ACW(winid)
//(1)
Sckey(winid,VK_F12)
//(2)
Sckey(winid,VK_ALT,P)
//(3)
Print "休憩中"
For i=1 To 700 //(5)0.1秒単位で数えるので70*10回ループする
If GetKeyState(VK_ESC) Then Exit
Sleep(0.1)
Next
Print "休憩終わり"
Wend
ACWをWhileループの中に入れた理由は、万一違うソフトにフォーカスが移ると目的のソフトにキー入力が届かない心配があり、そうなるのを避けるためです。
UWSCの時間指定はトラップで、Sleepは秒単位なのにそれ以外はミリ秒単位です。なのでKBD(VK_F12,DOWN,77)だと、77秒じゃなくて77ミリ秒(0.077秒)となります。
No.1
- 回答日時:
私もあまり詳しくはないですが
while TRUE
//if GETKEYSTATE(VK_ESC) then exitexit //exitexit・・・UWSCを終わる
if GETKEYSTATE(VK_ESC) then break //break・・・ループを抜ける
KBD(VK_F12,DOWN,300)
SLEEP(0.1)
KBD(VK_F12,UP,300)
//sleep(72+random(15))
秒数 = (1+random(15))
for i = 1 to 秒数 step 1
SLEEP(1)
ifb GETKEYSTATE(VK_ESC) then
KBD(VK_F12,DOWN,300)
//exitexit
break
endif
next
KBD(VK_F12,DOWN,300)
Print "休憩中"
wend
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CPU・メモリ・マザーボード pcの質問です。電源を入れると起動してすぐ消え、その3秒後にまた起動するようになりました。 3 2023/06/10 19:49
- Windows Me・NT・2000 widows xpのエラーで利用ができなくなりました 3 2022/12/21 13:43
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- F1・モータースポーツ 【F1】2026年に日本のホンダが2年半ぶりにマクラーレンにPUを提供してタッグを組ん 1 2023/06/05 21:23
- デスクトップパソコン MACのF1からF12までのキーをNECキーボードで操作できるようにする方法を教えてください。 2 2023/04/01 21:45
- 物理学 写真の解説の赤枠部分についてですが、 なぜ、(-vk-1)と-が付くのかがわからないです。 解説の③ 1 2023/02/10 23:54
- 数学 「FFTの基本は、DFTはサンプル数Nが偶数なら 2つのDFTに分解できるということ。 分解するとD 3 2022/03/31 21:01
- CPU・メモリ・マザーボード 起動時にF1を要求されます。 2 2023/01/22 12:55
- テレビ SwitchBot HUBmini テレビの操作 1 2023/02/26 21:37
- Windows 10 Windows10でボリュームのアップダウンを簡単にできる方法ないですか? 1 2023/06/20 13:06
このQ&Aを見た人はこんなQ&Aも見ています
-
UWSCの終了の仕方
その他(プログラミング・Web制作)
-
UWSCのスクリプトにラグが発生します。
その他(プログラミング・Web制作)
-
UWSCのプログラムについて。キーを押し続けているあいだ待機状態にしたい
その他(プログラミング・Web制作)
-
-
4
UWSC 非アクティブウィンドウへのキー入力
その他(ソフトウェア)
-
5
変数内に入った文字列の結合 UWSC
その他(プログラミング・Web制作)
-
6
UWSCの待機コマンドについて
その他(ソフトウェア)
-
7
UWSCのTHREADについて
その他(プログラミング・Web制作)
-
8
UWSCにてある一定の動作を無限ループさせる方法の記述がわかりません。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
CSVファイルの特定の行だけを読...
-
vb.netです。2次元配列の要素を...
-
VBAでの一時停止と再開の方法
-
UWSCの終了の仕方
-
Escキーを押すと、中断する時と...
-
エクセルの当番表を作っていま...
-
流れ図(フローチャート)が分か...
-
範囲指定したセルを1つずつ飛...
-
GIFアニメをループさせたくない
-
なぜⅰなのか?
-
VBA for i=1 to lastrow
-
ボタンが押された時にループか...
-
VBAでln関数の計算
-
DOSコマンドのループ内のTIMEコ...
-
乱数の桁数指定、または範囲指定。
-
データベースをEOFまでループさ...
-
スプレッドシート GASの繰り返...
-
vbscriptでIE自動入力(途中で...
-
CASL2のアセンブリ(?)で質問...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UWSCの終了の仕方
-
画面を強制的に再描画させる方法
-
Escキーを押すと、中断する時と...
-
範囲指定したセルを1つずつ飛...
-
vb.netです。2次元配列の要素を...
-
VBAで3秒だけ時間を止めたい
-
エクセルの当番表を作っていま...
-
UWSCに制限時間を付けたいです
-
DOSコマンドのループ内のTIMEコ...
-
VBAでの一時停止と再開の方法
-
CSVファイルの特定の行だけを読...
-
DoEventsが必要な理由について
-
GIFアニメをループさせたくない
-
VBA for i=1 to lastrow
-
Do whileでExitせず、ループの...
-
VBA Boxが空白の場合のメッセー...
-
vb.netからエクセル関数書き込み
-
イベントの発生を待つ
-
乱数の桁数指定、または範囲指定。
-
エクセル関数で1〜12の数字がル...
おすすめ情報