⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 91.txt

📁 VB文章集(含API、窗口、数据库、多媒体、系统、文件、等等)
💻 TXT
字号:
用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 在指定时间关机 
  (时间格式:00:00:00) 
 Index 0 
Option1(1) Caption 延迟指定的时间关机 
 Index 0 
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) Then
      If DateDiff("s", nowTime, txtTime) < 0 Then 
      '用DateDiff函数判断是否到时间了
        If Not ExitWindowsEx(EWX_SHUTDOWN, 0) Then 
         MsgBox "无法关闭计算机"
        End If
      End If
    ElseIf 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函数,把她的图标放在系统任务栏里,即在右下角有声音,时间等图标的地方,那是另外一个主题了。

   (版主注:此文有bug,Command1_Click过程改为下述代码为好)

附:

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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -