プログラムを一時停止するには?


のりだぁ=  2007-06-05 22:01:28  No: 136619

1秒か2秒、どのボタンを押してもイベントが起きない状態にしたいのですが、どのようにしたら良いのか全く分かりません。(プログラムを終了させるのではないのです。)Timerを使うと上手く行くのかなとも思いましたが、私の力では解決できません。皆様の知恵をお借り出来たら幸いと思っております。宜しくお願い致します。


のりだぁ=  2007-06-05 22:04:58  No: 136620

追加です。私のプログラムでは、KeyUPを使っています。したがって、どのキーを押してもイベントが起きない状態にしたいのです。宜しくお願い致します。


あき  2007-06-05 22:25:01  No: 136621

フラッグを使ってイベントプロシージャの入り口でExitSubすればいいのでは?


のりだぁ=  2007-06-05 22:55:32  No: 136622

ご指導ありがとうございます。私の勘違いであるならお許し願いたいのですが、Exit subを使うと、そのプロシージャ(private〜で始まり、end subで終わるかたまり)から強制的に抜け出すことでイベントが起こらなくなることではないかと思うのですが如何でしょうか?
  今回は、1つのプロシージャーの中で一時的に(2〜3秒だけ)止めたいのです。その後は、通常通りに動いて欲しいのです。なぜなら、特定のキーを押すと同じことを繰り返すプログラムだからなのです。
  我がままなことを言って申し訳ありませんが宜しくお願い致します。


ささき  2007-06-06 02:49:48  No: 136623

特定のキーだけイベントの処理をしたいのであれば
イベントの中でIf文でその他のキーが押されたときは
軒並みexit Subで良い気がしますがいかがでしょうか?


 2007-06-06 17:06:51  No: 136624

ボタン押下
↓  
1〜2sec停止

ボタンの処理を開始

という処理ならSleepかな?


グラフ  2007-06-06 17:42:09  No: 136625

いつもお世話になってるグラフです。

Private キーアップイベント関数()

  何らか処理A

  ここでイベントを受け付けたくない
  次の処理Bを続けたいからExit Subもしたくない

  何らか処理B

End Sub


このようなことをやりたいんでしょうか?

(1) 待ち方はたくさんあります。
・Sleep
  アプリケーションがスリープします。要DLL知識
・While文でタイム監視
  DoEventsをいれなければ、他のイベントは受け付けません
  この間に発生したイベントは命令キューに残ります。
  CPU使用率が高くなりますが...
・While & Timerを使う
  TimerをEnable
  While文でDoEventsをいれて、
  TimerがDisableになるのを待つ。
  Timerイベントでは、イベント発生時に、
  TimerをDisableする。
  発生させたくないイベントの最初には、
  TimerがEnable中はExitSub
  DoEventsしてるので、
  この間に発生したイベントは処理されるので、
  命令キューに残りません。
など、いろいろやり方はあります。


 2007-06-06 17:48:26  No: 136626

vb2003ならAPIではなく

System.Threading.Thread.Sleep(a)  'aはミリsec

でいけるはずです


とおりすがりん  2007-06-06 18:35:24  No: 136627

Option Explicit

Private Sub Form_KeyPress(KeyAscii As Integer)

    if KeyAscii <> vbKeyReturn Then Exit Sub
    ' Enter キーを押された時以外は、Exit Subされ何も処理しません。

    ' 特定のキーを押した時に行う処理を記載する。

End Sub

・1つのプロシージャーの中で一時的に(2〜3秒だけ)とめる
  プログラムの例。

Private Sub Form_KeyPress(KeyAscii As Integer)

    MsgBox "OKボタン押した後、3秒間プログラムをとめます。"
    Call Sleep(3000)
    MsgBox "3秒間プログラムをとめました。"

End Sub

#2〜3秒とめたいのと、特定のキーを押した時の関連をもう少し
  詳しく知りたいかも・・・。


のりだぁ=  2007-06-08 13:11:58  No: 136628

皆様のご指導ありがとうございます。私が使っているのは、.NET2003です。私が2・3秒だけ止めたい理由は、まさにグラフさんが指摘下さっている通り
Private キーアップイベント関数()
何らか処理A
ここでイベントを受け付けたくない
次の処理Bを続けたいからExit Subもしたくない
何らか処理B
End Sub
です。
キーについてですが、VB画面上に出したものに対して被検者は、
それがどれなのか該当するものを→←↑↓から選んで
もらいます。これを40回繰り返すのですが、被検者が4つの
矢印キーのどれかを押すと次のものを出すようにしています。
被検者にはいろいろな人がいるので、間違って
キーを連続で押してしまうこともあると思います。
それを防ぐために、如何したらよいかと考え、
プログラムを2〜3秒止めてしまえばと考えました。
したがって、Exit subをしてしまうと繰り返せなく困っているのです。
私の質問に対し、多くの方から貴重なご意見を賜ることが出来て嬉しく
思うとともに大変感謝致しております。1つ1つプログラムで試してみます。今後とも宜しくお願いします。


※作成する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。







   このエントリーをはてなブックマークに追加