
作りたい動作は特定のアプリケーションで「(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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
UWSCの終了の仕方
その他(プログラミング・Web制作)
-
変数内に入った文字列の結合 UWSC
その他(プログラミング・Web制作)
-
UWSCのプログラムについて。キーを押し続けているあいだ待機状態にしたい
その他(プログラミング・Web制作)
-
-
4
UWSCのスクリプトにラグが発生します。
その他(プログラミング・Web制作)
-
5
UWSC 非アクティブウィンドウへのキー入力
その他(ソフトウェア)
-
6
UWSCのプログラミングついて教えてください。
その他(プログラミング・Web制作)
-
7
UWSCに制限時間を付けたいです
その他(プログラミング・Web制作)
-
8
uwcs のマクロで画像認識をしてその画像があればクリックというマクロを作成したのですが、クリック後
その他(開発・運用・管理)
-
9
UWSCのTHREADについて
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA横データを縦にしたいです
-
VBAでの一時停止と再開の方法
-
UWSCに制限時間を付けたいです
-
テキストボックスの名前に変数...
-
C言語でファクト関数を使わずに...
-
xmplayの使い方
-
ループフリー
-
Do whileでExitせず、ループの...
-
csh foreachで「*」でエラ...
-
CやJAVa,Rubyなどプログラミン...
-
GIFアニメをループさせたくない
-
CSVファイルの特定の行だけを読...
-
エクセルの当番表を作っていま...
-
C#で別のフォームのprogress ba...
-
vb.netからエクセル関数書き込み
-
Excel VBAでIf 条件式 then か...
-
Dim flag(4) as boolean で配列...
-
Strawberry Perl for Windows ...
-
エクセルVBAでTransposeの不思議
-
マクロ Publicでの配列定義
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
UWSCの終了の仕方
-
DOSコマンドのループ内のTIMEコ...
-
範囲指定したセルを1つずつ飛...
-
VBAでの一時停止と再開の方法
-
Escキーを押すと、中断する時と...
-
乱数の桁数指定、または範囲指定。
-
イベントの発生を待つ
-
流れ図(フローチャート)が分か...
-
UWSCに制限時間を付けたいです
-
vb.netです。2次元配列の要素を...
-
VBA for i=1 to lastrow
-
DoEventsが必要な理由について
-
ループフリー
-
VBA Boxが空白の場合のメッセー...
-
VBA ニュースタイトル取得
-
エクセルの当番表を作っていま...
-
Javaの質問です。 この問題の答...
-
テキストボックスの名前に変数...
-
CSVファイルの特定の行だけを読...
おすすめ情報