- ベストアンサー
VB6.0を使ったイベント発生条件の設定方法
- VB6.0を使ってイベント発生条件を複数設定する方法を教えてください。
- 参考ページを探していますがうまく見つかりません。
- VB6.0でタイマーを使って特定の時間にイベントを発生させる方法を知りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。失礼します。 細かい制御は全く入れてませんが、とりあえず動くっぽいレベルで 似たようなのを作ってみました。 Form1に、TextBoxを3つ、Labelを1つ、CommandButtonを1つ、Timerを1つ貼り付けて TimerのIntervalは 100、EnabledはFalseにしてください。 で、以下の処理を貼り付けます。 (Form1) Dim targetTime1 As Date Dim targetTime2 As Date Private Sub Command1_Click() targetTime1 = CDate(Text2) targetTime2 = CDate(Text3) Timer1.Enabled = True End Sub Private Sub Timer1_Timer() Text1 = Format(Time, "hh:mm:ss") Select Case Time Case targetTime1 Label1 = "朝です" Case targetTime2 Label1 = "昼です" End Select End Sub Text2、Text3に、反応させたい時間("7:00:00"とか)を入力して CommandButtonを押すと時間の表示が始まります。 Labelの表示を、いつ どのように消すか等、実際には もっと 考えるべきことがありますが、その辺は とりあえず置いておくことにします。 いろいろ工夫してみてください。
その他の回答 (2)
- Nayuta_X
- ベストアンサー率46% (240/511)
下記を参考に。 勘違いかな??。 Private Sub Form_Load() '日付を取得して表示する Label1.Caption = Date '日付と時刻を取得して表示する Label2.Caption = Now '時刻を取得して表示する Label3.Caption = Time End Sub 以下は、APIを利用した 画面をキャプチャして、ファイルに保存する コードです。 参考に。 Option Explicit Private Declare Sub keybd_event Lib "user32" ( _ ByVal bVk As Byte, _ ByVal bScan As Byte, _ ByVal dwFlags As Long, _ ByVal dwExtraInfo As Long) Private Const VK_SNAPSHOT = &H2C Private Const VK_LWIN = &H5B Private Const KEYEVENTF_EXTENDEDKEY = &H1 Private Const KEYEVENTF_KEYUP = &H2 '画面全体をキャプチャ Private Sub Command1_Click() Me.Visible = False DoEvents Call keybd_event(VK_SNAPSHOT, 0, 0, 0) DoEvents Me.Visible = True Picture1.Visible = False Picture1.AutoRedraw = True Set Picture1.Picture = Clipboard.GetData(vbCFBitmap) SavePicture Picture1, App.Path & "\" & "capture.bmp" Call MsgBox("画面全体を取り込みました") End Sub 'タイマーを使って5秒後にキャプチャ Private Sub Command2_Click() Timer1.Interval = 5000 Timer1.Enabled = True Me.Visible = False End Sub Private Sub Timer1_Timer() Timer1.Enabled = False Timer1.Interval = 0 Call keybd_event(VK_SNAPSHOT, 1, 0, 0) DoEvents Picture1.Visible = False Picture1.AutoRedraw = True Set Picture1.Picture = Clipboard.GetData(vbCFBitmap) SavePicture Picture1, App.Path & "\" & "capture.bmp" Me.Visible = True Call MsgBox("アクティブウィンドウを取り込みました") End Sub
- K-Sogacchi
- ベストアンサー率53% (50/93)
失礼します。 > 複数のイベント発生条件 というのが不明瞭なのですが、何かアクションを起こす対象の時間が 複数ある、ということなのでしょうか? そうであれば、基本的にはあくまで「イベント」(イベントプロシージャ)は 1つのみで作成するのが通常のやり方だと思います。 提示されたソースで言えば、Timer1_Timer() が その単一のイベントで、 あくまで「Timer1_Timer()の中で」「複数の」条件を判定すべきかと。 (余談ですが、Timerの1000msが現実の1秒と完全にシンクロするわけではないので、 タイマーのインターバルは100msとか500msとか、1秒より短い時間にして、 イベントが複数発生してしまうのは何らかの方法で強制的に回避したほうが いいと思います) この内容で合っているならば、あまりテクニック的な部分は無いかと思いますので サイトを探すのは難しいかと思います。 あるとすれば、VB勉強用のサイトにヒントがあるかもしれない、ぐらいでしょうか? ちなみに、「直接時間を設定する」ならば、Date型の変数に値を代入します。 これを実現するためにはTimeValue関数あたりが使えるかと思いますが、 TextBoxから時間を取得しようとする場合はキッチリとエラー処理を 行わないといけないので、DateTimePickerか何かを使われたほうが 結果的に楽かもしれません。
お礼
ありがとうございます。 いろいろなことが出てきましたね♪本当に初歩的な部分だと自分でも思っています。 複数というのは、時間が7:00場合は『朝です』時間が12:00の時は『お昼です』というような感じになればなと思います。 チャート?でしたっけ?そんな感じです♪ 頭では想像できてるんですけど、なかなか文章にするというのは難しいですね。伝わりにくくすみませんでした。
お礼
出来ました。 こんな感じですね♪ あとは、メッセージボックスで出す加工とテキストに入力した時間を消す加工かなって所です☆あとボタンで動かさないといけないので、ボタンじゃなく自動で動いてくれるようにすって感じですかねww ありがとうございました☆
補足
Option Explicit Dim targetTime1 As Date Dim targetTime2 As Date -------------------------------------------- Private Sub Form_Load() targetTime1 = CDate(Label1) targetTime2 = CDate(Label2) Timer1.Enabled = True End Sub -------------------------------------------- Private Sub Timer1_Timer() Text1 = Format(Time, "hh:mm:ss") Select Case Time Case targetTime1 MsgBox "朝です", vbMsgBoxSetForeground Case targetTime2 MsgBox "昼です", vbMsgBoxSetForeground End Select End Sub --------------------------------------------------- 最終的にこんな感じになりました☆ textが1 ラベルが2 タイマー1って感じです。 しかし、MsgBoxの後にvbMsgBoxSetForeground「最前面のウィンドウとして表示します。」を使ったのですが、全く最前面にでてきません…どこか間違えているでしょうか?