月光软件 » VB » 用VB编写定时关闭计算机的程序

用VB编写定时关闭计算机的程序

  微软的VB以简单易用,功能强大而著称,使用VB可以很容易地编写出定时关闭计算机的程序。以下是一个简单的定时关闭计算机的程序,供各位使用VB的朋友参考,如有何不适之处,请多指点!

  定时关闭计算机,很显然,有两个关键点:

  1.定时。可以用VB中的Timer控件结合计算机的系统时间来进行精确的定时。

  2.关闭计算机。这可以调用Win32 API函数 ExitWindowsEx 来关闭计算机。

  下面首先来说明一下 ExitWindowsEx 函数,该函数在VB中的声明如下:

  Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

  【返回值】

  Long,非零表示成功,零表示失败。

  【参数表】

  uFlags --------- Long,

  指定下述一个或多个标志(用OR运算符合并到一起)

  EWX_FORCE=4

  强迫中止没有响应的进程

  EWX_LOGOFF=0

  中止进程,然后注销

  EWX_SHUTDOWN=1

  关掉系统电源(如果可能的话,ATX电源就可以)

  EWX_REBOOT=2 重新引导系统

  dwReserved ----- Long,保留,设为零

  好了,现在可以开始编程了。

  1. 新建一个标准EXE工程。

  2. 在窗体上放置一个TextBox控件,用以输入定时时间。

  3. 在TextBox控件之下放置两个OptionButton控件,组成控件数组,用以选择定时模式。

  4. 在OptionButton控件之下放置一个CommandButton.

  5. 随便在窗体的某地方放置一Timer控件。

  以上控件了需要设置的属性值如下:

  对象      属性   设置

  Text1       Text   空

  Option1(0)    Caption   在指定时间关机

  Option1(1)    Caption   延迟指定的时间关机

  Command1    Caption   确定

  Timer1      Interval   15000(精确到1/4分钟,

  如要更精确可减少该值)

  Enabled     False

  增加代码如下:

  标准模块:
  Option Explicit
  Public Const EWX_SHUTDOWN = 1 '关闭系统

  Declare Function ExitWindowsEx Lib
  "user32" (ByVal uFlags As Long, ByVal
  dwReserved As Long) As Long

  窗体模块:

  Option Explicit
  Dim txtTime   '保存输入时间
  Dim nowTime   '保存实时时间
  Dim oldTime   '保存开始定时时间

  Private Sub Command1_Click()
    oldTime = Time
    If Not IsDate(Text1.Text) Then
   '用IsData函数判断输入的时间格式
   MsgBox "你所输入的不是时间格式,请重试!", , "Wrong"
     Else
      txtTime = TimeValue(Text1.Text)
    End If
    Timer1.Enabled = True
           '启动定时器
    Me.WindowState = 1
            '最小化窗体
  End Sub

  Private Sub Timer1_Timer()
    nowTime = Time
    If Option1(0).Value Then
      If DateDiff("s", nowTime, txtTime) < 0
   Then  '用DateDiff函数判断是否到时间了
  If Not ExitWindowsEx(EWX_SHUTDOWN, 0)
   Then    MsgBox ("无法关闭计算机")
        End If
      End If
     Else
   If DateDiff("s", nowTime, oldTime + txtTime) < 0
  Then  If Not ExitWindowsEx(EWX_SHUTDOWN, 0)
  Then      MsgBox ("无法关闭计算机")
        End If
      End If
    End If
  End Sub

  结束语:以上程序在VB5.0/6.0和Win98上调试通过。其实,此程序还可增加一些花样,譬如,最后窗体不是最小化,而是调用Win32 API函数,把她的图标放在系统任务栏里,即在右下角有声音,时间等图标的地方,那是另外一个主题了。

相关文章

发表留言


点击更换验证码