作者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