• ベストアンサー

決まった時刻(秒単位)にボタンを自動でクリックしたい

決められた時刻(秒単位もしくはそれ以下)に 決まったボタンを押せる様なソフトは無いでしょうか? 例えば19時0分5秒にスタートボタンをクリックする、 あるいは19時0分5秒50ミリ秒にスタートボタンをクリックする という様な操作の事です。 始めはロケットマウスを試したのですが、コントロールできる 時間の最小単位が分だった為に使えませんでした。 ロケットマウスの様に高機能でなくても構いません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • harapeco7
  • ベストアンサー率54% (33/61)
回答No.3

修正版です。 (ちょっと確率UPです。が、やはり実用レベルとは言えませんね。) stopform(true) msgbox("OKを押した3秒後にクリックします。") gettime() time0=COPY(G_TIME_HH2+G_TIME_NN2+G_TIME_SS2+G_TIME_ZZ2,1,7) PRINT "開始時刻:"+time0 time0=val(time0)+30 PRINT "設定時刻:"+time0 while true gettime() time1=COPY(G_TIME_HH2+G_TIME_NN2+G_TIME_SS2+G_TIME_ZZ2,1,7) ifb time1=time0 then msgbox("クリック出来ました。") exitexit elseif time1>time0 msgbox("クリックに失敗しました。(設定時刻を通りすぎました。)") exitexit endif sleep(0.005) wend

mickey00
質問者

お礼

お礼が大変遅くなってしまい、申し訳ありません。 わざわざサンプルプログラムまで作成頂き 大変感謝しています。 これを自分用にカスタマイズして使用しています。 ありがとうございました。

その他の回答 (3)

  • iriyak
  • ベストアンサー率48% (40/82)
回答No.4

以下のプログラムで 10 ミリ秒を確かに SLEEP が刻んでいるようですので、この while ループによる CPU 使用率が影響のない PC 環境でしたら、質問者のやりたいことを UWSC で実現可能かもしれません。 最終的に(スタートボタンが)クリックされたアプリケーションにイベントが届くまでの時間を考慮して微調整は必要だとは思いますが・・・。 prev = 0 while !GETKEYSTATE(VK_ESC)   SLEEP(0.01)   prev = d(prev) wend function d(prev)   now = GETTIME() * 1000 + G_TIME_ZZ   print now - prev   result = now fend

mickey00
質問者

お礼

お礼が大変遅くなってしまい申し訳ありません。 サンプルプログラムまで作成して頂き 感謝致します。 確かに微調整は必要みたいですね。 いろいろトライしてみようと思います。 ありがとうございました。

mickey00
質問者

補足

お二人とも回答の内容は甲乙つけがたいです。 そこで、勝手ながら投稿順にポイントを つけたいと思います。 ありがとうございました。

  • harapeco7
  • ベストアンサー率54% (33/61)
回答No.2

>どうやらBASICの様にプログラミングが必要みたいですね。 ですね。ヘルプが非常に良くできていますので、良く目を通して下さい。 >あるいは19時0分5秒50ミリ秒にスタートボタンをクリックする ミリ秒単位で取得は出来ても、クリックとなると・・・ 秒単位では、問題は発生しないと思いますが、ミリ秒となると スキャンタイム(プログラムがループする速度)相当早くないと、 指定した時刻を取りこぼしてしまいます。 と、いうことでテストプログラムを雑(タイミングによっては存在しない設定時刻となる) ですが書きましたのでお試し下さい。 ちなみに私の環境では、五分五分といった所でした。 下記メモ帳に張り付け、拡張子を.uwsとし、uwscと関連づけて使用して下さい。 stopform(true) msgbox("OKを押した3秒後にクリックします。") gettime() time0=COPY(G_TIME_HH2+G_TIME_NN2+G_TIME_SS2+G_TIME_ZZ2,1,7) PRINT "開始時刻:"+time0 time0=val(time0)+30 PRINT "設定時刻:"+time0 while true gettime() time1=COPY(G_TIME_HH2+G_TIME_NN2+G_TIME_SS2+G_TIME_ZZ2,1,7) ifb time1=time0 then msgbox("クリック出来ました。") exitexit elseif time1>time0 msgbox("クリックに失敗しました。(設定時刻を通りすぎました。)") exitexit endif wend

  • harapeco7
  • ベストアンサー率54% (33/61)
回答No.1

フリーの UWSC というソフトは如何でしょうか? 下記ホームページです。 http://www.uwsc.info/index.html GETTIME という関数で日時をミリ秒の単位まで取得できます。

mickey00
質問者

お礼

harapeco7さん ご回答ありがとうございます。 どうやらBASICの様にプログラミングが必要みたいですね。 でもミリ秒単位まで扱えるとの事なので、 それは大変魅力的です。

関連するQ&A

専門家に質問してみよう