看板 Visual_Basic 關於我們 聯絡資訊
練習寫主控台的時候寫的一個小程式 包含註解: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
s3748679:既然是.net裡 本身就可以找到sleep這東西 10/09 00:26
s3748679:另外在vb.net中使用 win32 API時 這個sleep宣告要注意 10/09 00:27
s3748679:在我vb2010下去測試 就會有問題 sleep的dwMilliseconds理 10/09 00:28
s3748679:應為int32 而非 long (64bit) 10/09 00:28
s3748679:雖然程式裡有不少點都還能做個改善 還是支持你的分享 10/09 00:29
s3748679:幫貼程式碼: http://ppt.cc/BpPE 10/09 00:31
s3748679:... 修正一下 有UInt32可以用 10/09 00:34
chinoyan:這東程式,用表單作介面,用TIMER計時,才比較正確 10/09 10:16
Marty:怎麼覺得這語法還停在VB6時代 .net其實有很多更簡潔寫法 10/09 15:35
zhangzhixuan:因為我從VB6跳2008-.-有些指令還不清楚... 10/09 18:28