作者zhangzhixuan (山崎翔太)
看板Visual_Basic
標題[.NET] [分享]主控台應用程式-鬧鐘
時間Mon Oct 8 23:05:56 2012
練習寫主控台的時候寫的一個小程式 包含註解:D
原理蠻簡單的...
Module Module1
'SLEEP_API 防止BEEP來不及反應
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim time1 As String
Dim yoba As Boolean
Sub Main()
On Error GoTo ers
Console.Title = "山崎小鬧鐘"
For i = 1 To 3 Step 1
Console.Beep(600, 100)
Sleep(200)
Next i
Console.WriteLine("如果剛才沒有聽到電腦叫三聲 表示您的電腦不支援此鬧鐘。")
Console.WriteLine("程式設計:山崎翔太 (C)Copyright 山崎翔太-2012")
'問到確定時間是正確的才肯罷休
Do
Console.WriteLine("請輸入響鈴時間: 格式 yyyyMMddHHmm")
Console.WriteLine("如 2012年10月4日 晚上8點50分就輸入 201210042050")
Console.WriteLine("例如::現在時間就是= " & vbCrLf & Mid(Format(Now, "yyyyMMddHHmm"), 1, 4) & "年" _
& Mid(Format(Now, "yyyyMMddHHmm"), 5, 2) & "月" _
& Mid(Format(Now, "yyyyMMddHHmm"), 7, 2) & "日 " & _
Mid(Format(Now, "yyyyMMddHHmm"), 9, 2) & "時" & Mid(Format(Now, "yyyyMMddHHmm"), 11, 2) _
& "分" & vbCrLf & "那您就輸入::" & Format(Now, "yyyyMMddHHmm"))
time1 = Val(Console.ReadLine)
Console.WriteLine("您確定時間是 " & Mid(time1, 1, 4) & "年" & Mid(time1, 5, 2) & "月" _
& Mid(time1, 7, 2) & "日 " & Mid(time1, 9, 2) & "時" & Mid(time1, 11, 2) & "分" _
& " ? 如果確定請回1 要修正請回0")
Loop Until Console.ReadLine() = 1
Console.WriteLine("鬧鈴已設定完成並且已啟動" & vbCrLf & "響鈴時間 = " & Mid(time1, 1, 4) & "年" _
& Mid(time1, 5, 2) & "月" _
& Mid(time1, 7, 2) & "日," & Mid(time1, 9, 2) & "時" & _
Mid(time1, 11, 2) & "分")
'主要設定的時間到了 就開始叫
Do
If Val(time1) = Format(Now, "yyyyMMddHHmm") Then
Console.WriteLine("響鈴已啟動")
Do While Val(time1) = Format(Now, "yyyyMMddHHmm")
Console.Beep(600, 100)
Sleep(200)
Loop
yoba = True
End If
Loop Until yoba = True
Console.WriteLine("響鈴已結束,請按任意鍵結束本應用程式")
Console.ReadKey()
'以下是應用程式出錯時的處理方法
Exit Sub
ers:
Console.Beep(600, 100)
Console.WriteLine("應用程式發生錯誤" & vbCrLf & "請按任意鍵結束應用程式")
Console.ReadKey()
End
End Sub
End Module
以上... 我寫的就這樣= = 原本想加入貪睡功能 但是我忘記時間的加減函數了>//<
所以他只會叫一次...=.=
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.2.7
1F:推 s3748679:既然是.net裡 本身就可以找到sleep這東西 10/09 00:26
2F:→ s3748679:另外在vb.net中使用 win32 API時 這個sleep宣告要注意 10/09 00:27
3F:→ s3748679:在我vb2010下去測試 就會有問題 sleep的dwMilliseconds理 10/09 00:28
4F:→ s3748679:應為int32 而非 long (64bit) 10/09 00:28
5F:→ s3748679:雖然程式裡有不少點都還能做個改善 還是支持你的分享 10/09 00:29
7F:→ s3748679:... 修正一下 有UInt32可以用 10/09 00:34
8F:推 chinoyan:這東程式,用表單作介面,用TIMER計時,才比較正確 10/09 10:16
9F:推 Marty:怎麼覺得這語法還停在VB6時代 .net其實有很多更簡潔寫法 10/09 15:35
10F:→ zhangzhixuan:因為我從VB6跳2008-.-有些指令還不清楚... 10/09 18:28