投稿者 るきお  (社会人) 投稿日時 2009/8/3 22:25:41
デフォルトさんのサンプルですべてが語られています。
少し補足します。

このサンプルでは時刻の指定はDateTimePickerをフォームに配置してユーザーが入力できるようになっています。DateTimePickerを使用せずプログラムに直接日時を埋め込むこともできます。
指定した時間になっているか監視するためにTimer1を使用しています。
Timer2は点滅の制御のためにあるので、時間監視のためには必要ありません。
Timer1、Timer2はツールバーからTimerフォームに配置すると生成されます。

1つのTimer以外のコントロールに依存せず1日1回17:30に処理を実行する例を書いてみました。
簡単に書けると思ったのですが思ったより考慮すべきことが多いです。
    
'次回処理を行う年・月・日 (起動時はNow、つまり当日) 
Dim nextYear As Integer = Now.Year
Dim nextMonth As Integer = Now.Month
Dim nextDay As Integer = Now.Day

'次回処理を行う日時 (ここでは当日の17:30を指定) 
Dim dummyTime As New Date(nextYear, nextMonth, nextDay, 17, 30, 0)

Private Sub Timer1_Tick(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Timer1.Tick

    Dim thisTime As Date = Now

    If dummyTime <= thisTime Then
        Timer1.Enabled = False

        '▼ここに行いたい処理を書く 
        '▲ 

        '次回処理を行う年月日を更新(次の日をセット) 
        Dim nextTime As Date = thisTime.AddDays(1)
        nextYear = nextTime.Year
        nextMonth = nextTime.Month
        nextDay = nextTime.Day
        '次回処理を行う日時 (ここでは明日の17:30を指定) 
        dummyTime = New Date(nextYear, nextMonth, nextDay, 17, 30, 0)
        Timer1.Enabled = True
    End If
End Sub

もっと良いやり方ありますか?


一般的にはプログラムで指定した時間になったら処理を実行するようにするには、
そのプログラムは指定した時間になったか監視するために24時間365日起動している必要があり非効率です。
Windowsの機能として指定した時間になったらアプリケーションを起動するというものがあるので、
自分でプログラムして実現するのではなく、このWindowsの機能を使用することが多いです。
この機能の正式な名前はちょっと自信がないのですが普段「タスク」と呼んでいます。
コントロールパネルにあると思います。