用Timer解決問題的思路很簡(jiǎn)單,首先設(shè)定Timer類的Interval屬性(單位是毫秒),也就是時(shí)間間隔;然后在Timer的Elapsed的事件里寫執(zhí)行代碼,每過一個(gè)設(shè)置好的Interval時(shí)間間隔,將執(zhí)行一次Elapsed中的事件 (這和VB程序中的Timer控件基本沒有區(qū)別)。
成都創(chuàng)新互聯(lián)公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元鄂倫春做網(wǎng)站,已為上家服務(wù),為鄂倫春各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
那知道了用什么類,這些代碼要寫在哪里呢?把代碼寫在Global.asax件中,在VS的項(xiàng)目上右鍵,點(diǎn)添加--》新建項(xiàng),選“全局應(yīng)用程序類”,項(xiàng)目中就會(huì)有Global.asax文件了。
為了表達(dá)清楚直接上代碼(首先在Global.asax文件頭部引入system.Timers命名控件):
span style="font-size:18px;" public class Global : System.Web.HttpApplication
{
//在網(wǎng)站運(yùn)行時(shí)這段代碼同時(shí)啟動(dòng)
protected void Application_Start(object sender, EventArgs e)
{
System.Timers.Timer objTimer = new System.Timers.Timer();
objTimer.Interval = 60*1000; //這個(gè)時(shí)間單位:毫秒
objTimer.Enabled = true; //設(shè)置Timer類的可用性
//將Timer的Elapsed事件綁定到新建立的timer對(duì)象上
objTimer.Elapsed += new ElapsedEventHandler(objTimer_Elapsed);
}/span
下面是在Timer的Elapsed事件中的代碼
span style="font-size:18px;"void objTimer_Elapsed(object sender, ElapsedEventArgs e)
{
string Time = DateTime.Now.ToShortTimeString();//獲得當(dāng)前時(shí)間
//從配置文件里獲得當(dāng)前設(shè)置的時(shí)間。
string OrderTime = ConfigurationManager.AppSettings["OrderFoodTime"];
/*測(cè)試數(shù)據(jù)*/
if(Time.Equals(OrderTime))
{
//如果時(shí)間相等,執(zhí)行你要執(zhí)行的操作,這里可以調(diào)用你程序中的其他類的方法
}
}/span
最近在網(wǎng)上搜索了一些關(guān)于實(shí)現(xiàn)關(guān)機(jī) 重啟 注銷的文章 發(fā)現(xiàn)大多介紹的是VB NET 用API實(shí)現(xiàn)這些功能 且在XPsp 環(huán)境下無法正常的關(guān)機(jī)與注銷 而對(duì)于VB NET 的介紹幾乎沒有 本文章所涉及的知識(shí)點(diǎn)有
用實(shí)現(xiàn)關(guān)機(jī) 重啟 注銷功能 通過使用textbox與timer控件的結(jié)合編寫定時(shí)器功能 為你的程序加上超鏈接
本篇文章具有一定的基礎(chǔ)性和廣泛的實(shí)用性 相信能夠給 初學(xué)者帶來一定的幫助
本文所使用的編程環(huán)境是Microsoft Visual Studio 首先打開 Visual Studio 在文件 (File) 菜單上 單擊新建項(xiàng)目 (New Project) 在新建項(xiàng)目 (New Project) 對(duì)話框的模板 (Templates) 窗格中 單擊 Windows 應(yīng)用程序 (Windows Application) 單擊確定 (OK)
具體步驟如下
首先在Form 窗體上添加一個(gè)Label 控件屬性text設(shè)置為:今天: 然后分別添加 個(gè)button控件name分別為button button button 它們的text屬性分別為 關(guān)閉計(jì)算機(jī)(啟動(dòng)定時(shí)器) 注銷 重新啟動(dòng)
圖
現(xiàn)在我們就需要為程序加上一個(gè)定時(shí)器了 這個(gè)定時(shí)器需要與textbox 控件相關(guān)聯(lián) 輸入正確時(shí)間格式后就可以啟動(dòng)定時(shí)功能了 然后我們需要在窗體上添加一個(gè)timer 一個(gè)textbox 控件 和一個(gè)RadioButton 控件 讓它們保留默認(rèn)值不變 其中 TextBox 控件的text屬性設(shè)置為 : : RadioButton 控件text設(shè)置為 指定時(shí)間關(guān)機(jī)|時(shí)間格式 小時(shí): 分鐘: 秒如圖 所示
圖
以上界面工作基本完成現(xiàn)在需要輸入代碼了
雙擊窗體進(jìn)入常規(guī) 聲明Public Class Form 事件中
CODE
Imports System Runtime InteropServicesImports Microsoft VisualBasicPublic Class Form _ 調(diào)用系統(tǒng)參數(shù)Friend Shared Function GetCurrentProcess() As IntPtrEnd Function
_Friend Shared Function OpenProcessToken(ByVal h As IntPtr
ByVal acc As Integer ByRef phtok As IntPtr) As BooleanEnd Function
_Friend Shared Function LookupPrivilegeValue(ByVal host As String
ByVal name As String ByRef pluid As Long) As BooleanEnd Function
_Friend Shared Function AdjustTokenPrivileges(ByVal htok As IntPtr
ByVal disall As Boolean ByRef newst As TokPriv Luid
ByVal len As Integer ByVal prev As IntPtr
ByVal relen As IntPtr) As BooleanEnd Function
_Friend Shared Function ExitWindowsEx(ByVal flg As Integer
ByVal rea As Integer) As BooleanEnd Function
Friend Const SE_PRIVILEGE_ENABLED As Integer = H Friend Const TOKEN_QUERY As Integer = H Friend Const TOKEN_ADJUST_PRIVILEGES As Integer = H Friend Const SE_SHUTDOWN_NAME As String = SeShutdownPrivilege Friend Const EWX_LOGOFF As Integer = H 注銷計(jì)算機(jī)Friend Const EWX_SHUTDOWN As Integer = H 關(guān)閉計(jì)算機(jī)Friend Const EWX_REBOOT As Integer = H 重新啟動(dòng)計(jì)算機(jī)Friend Const EWX_FORCE As Integer = H 關(guān)閉所有進(jìn)程 注銷計(jì)算機(jī)Friend Const EWX_POWEROFF As Integer = H Friend Const EWX_FORCEIFHUNG As Integer = H
_ 引用參數(shù) Friend Structure TokPriv Luid Public Count As Integer Public Luid As Long Public Attr As IntegerEnd Structure
Private Shared Sub DoExitWin(ByVal flg As Integer) Dim xc As Boolean 判斷語(yǔ)句 Dim tp As TokPriv Luid Dim hproc As IntPtr = GetCurrentProcess() 調(diào)用進(jìn)程值 Dim htok As IntPtr = IntPtr Zero xc = OpenProcessToken(hproc TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY htok) tp Count = tp Luid = tp Attr = SE_PRIVILEGE_ENABLED xc = LookupPrivilegeValue(Nothing SE_SHUTDOWN_NAME tp Luid) xc = AdjustTokenPrivileges(htok False tp IntPtr Zero IntPtr Zero) xc = ExitWindowsEx(flg )End Sub
Public Shared Sub Reboot() DoExitWin((EWX_FORCE Or EWX_REBOOT)) 重新啟動(dòng)計(jì)算機(jī)End Sub
Public Shared Sub PowerOff() DoExitWin((EWX_FORCE Or EWX_POWEROFF)) 關(guān)閉計(jì)算機(jī)End Sub
Public Shared Sub LogoOff() DoExitWin((EWX_FORCE Or EWX_LOGOFF)) 注銷計(jì)算機(jī)End Sub
Dim entTime As Object 保存輸入時(shí)間Dim xianzaiTime As Object 保存實(shí)時(shí)時(shí)間Dim startTime As Object 保存開始定時(shí)時(shí)間
注銷button 按鈕輸入code
Private Sub Button _Click(ByVal sender As System Object
ByVal e As System EventArgs) Handles Button ClickLogoOff() 注銷計(jì)算機(jī)End Sub
雙擊重新啟動(dòng)按鈕button 輸入code
Private Sub Button _Click(ByVal sender As System Object
ByVal e As System EventArgs) Handles Button Click
Reboot()
End Sub
雙擊關(guān)閉計(jì)算機(jī)按鈕button 輸入code
Private Sub Button _Click(ByVal sender As System Object
ByVal e As System EventArgs) Handles Button Click startTime = TimeOfDay If Not IsDate(TextBox Text) Then 用IsData函數(shù)判斷輸入的時(shí)間格式MsgBox( 你所輸入的不是時(shí)間格式 ! 錯(cuò)誤 ) ElseentTime = TimeValue(TextBox Text) End If Timer Enabled = True 啟動(dòng)定時(shí)器 Me WindowState = System Windows Forms FormWindowState Minimized 最小化窗體
End Sub
如圖
圖
雙擊timer 控件如圖
圖
輸入代碼
Private Sub Timer _Tick(ByVal sender As System Object
ByVal e As System EventArgs) Handles Timer Tick xianzaiTime = TimeOfDay If RadioButton Checked Then
If DateDiff(Microsoft VisualBasic DateInterval Second
xianzaiTime entTime) Then 用DateDiff函數(shù)判斷是否到時(shí)間了
End IfEnd If
PowerOff() 關(guān)閉計(jì)算機(jī)End Sub
好了 基本上一個(gè)定時(shí)關(guān)機(jī)程序就完成了 接下來加一個(gè)超級(jí)鏈接吧!當(dāng)然對(duì)于高手來說可能是廢話 但是對(duì)于新手來說這也是必備的 這個(gè)超級(jí)鏈接當(dāng)然是我們最喜歡的天極網(wǎng)開發(fā)頻道了
先創(chuàng)建一個(gè)Label控件吧 把它托到窗體上 將text屬性設(shè)置為天極網(wǎng)開發(fā)頻道如圖
圖
接下來需要輸入代碼了 雙擊窗體Form
進(jìn)入Public Class Form 事件
代碼
Private Declare Function ShellExecute Lib shell dll
Alias ShellExecuteA (ByVal hwngnd As Integer
ByVal lpOperation As String ByVal lpFile As String
ByVal lpParameters As String ByVal lpDirectory As String
ByVal nShowCmd As Integer) As Integer
如圖
圖
雙擊剛才添加的label屬性text:(天極網(wǎng)開發(fā)頻道)中輸入以下代碼
Private Sub Label _Click(ByVal sender As System Object
ByVal e As System EventArgs) Handles Label ClickShellExecute( open CStr( ) CStr( ) )
End SubEnd Class
OK!全部搞定 按F 鍵運(yùn)行如圖 所示 選擇相應(yīng)選項(xiàng)后點(diǎn)擊(關(guān)閉計(jì)算機(jī)啟動(dòng)定時(shí)器按鈕)就可以了 現(xiàn)在程序?qū)凑漳闼O(shè)定的時(shí)間而啟動(dòng)關(guān)閉計(jì)算機(jī)選項(xiàng)
lishixinzhi/Article/program/net/201311/12366
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Timer1.Interval = 2000(兩秒)
Me.Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
MsgBox("Hello World")
End Sub
在界面拖一個(gè)Button和Timer試試這個(gè)效果,在界面雙擊Timer控件,代碼應(yīng)該很明白了
控制臺(tái)調(diào)用Timer和窗體是類似的。首先在項(xiàng)目引用里面加入System.Windows.Forms程序集,然后在代碼頂部引入命名空間:
Imports System.Windows.Forms
在控制臺(tái)的Module中聲明一個(gè)計(jì)時(shí)器:
Private WithEvents Timer1 As New Timer()
把計(jì)時(shí)器的Tick事件靜態(tài)綁定到處理函數(shù)中:
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
'一些代碼
End Sub
在需要開始計(jì)時(shí)的地方,修改其Interval、Enabled屬性:
Timer1.Interval = 1000
Timer1.Enabled = True