假设目标电脑是XP系统(可以使用休眠,但没有启用)
该怎样编程,让其进入休眠呢?注意:是休眠(要关机的),不是待机哦!!!

解决方案 »

  1.   

    Option Explicit
    Const SM_CLEANBOOT = 67Const EWX_LOGOFF = 0
    Const EWX_SHUTDOWN = 1
    Const EWX_REBOOT = 2
    Const EWX_FORCE = 4Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, _
        ByVal dwReserved As Long) As Long
        
    Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As LongPrivate Declare Function GetTickCount Lib "kernel32" () As LongDim mytime As Date
    Dim RUNTIME As LongPrivate Sub Timer1_Timer()
      Dim HOUR As Integer
      Dim MIN As Integer
      Dim SEC As Integer
      Dim RUN As String
      Dim delay As Integer
      RUNTIME = GetTickCount() \ 1000
      HOUR = Int(RUNTIME \ 3600)
      MIN = (RUNTIME - 3600 * HOUR) \ 60
      SEC = RUNTIME - 3600 * HOUR - 60 * MIN
      RUN = HOUR & ":" & MIN & ":" & SEC
      
      Select Case GetSystemMetrics(SM_CLEANBOOT)
             Case 1: Label1.Caption = "安全模式已运行" & Format(RUN, "hH:Mm:Ss")
             Case 2: Label1.Caption = "网络安全模式已运行" & Format(RUN, "hH:Mm:Ss")
             Case Else: Label1.Caption = "正常模式已运行" & Format(RUN, "hH:Mm:Ss")
      End Select
      delay = (Val(Text1.Text) - RUNTIME \ 60 + mytime \ 60)
      If Text1.Enabled = False Then
         Label3.Caption = "距离关闭计算机还有 " & delay & " 分钟"
         If delay = 0 Then Call ExitWindowsEx(EWX_SHUTDOWN, 0)
      End IfEnd SubPrivate Sub Command1_Click()
      If Val(Text1.Text) * 60 > 60 Then
         Text1.Enabled = False
         mytime = RUNTIME
       Else
         MsgBox ("请输入关机时间,时间要大于1分钟!")
      End If
    End SubPrivate Sub Command2_Click()
      Text1.Enabled = True
    End SubPrivate Sub Command3_Click()
      End
    End Sub
      

  2.   

    开始=>关闭系统=>休眠用鼠标逐个单击.:D
      

  3.   

    晕,到底有没有人试过啊?老大,不用键盘是点不到的!那只有待机,非要按下Shift才会变成休眠啦。现在就是因为俺手边只有鼠标(无线的),够不着键盘(有线的),所以才想编个软件来实现的。当然,谁要是嫌钱多,愿意捐给我买无线键盘的,俺会非常乐意的,呵呵 :)请寄往如下地址:=============
    以下内容只有回复后才可浏览
    =============
      

  4.   

    可否试过SetSystemPowerState函数?
      

  5.   

    那如何知道休眠功能已开启?
    没看懂 GetSystemPowerStatus 的说明,它好像只说了笔记本的状态。
    但我只想知道当前系统有没有设置休眠功能,还请老大帮一下,谢谢:)
      

  6.   

    开始=>关闭系统=>休眠用鼠标逐个单击.:D
    支持~~
      

  7.   

    阿门,老兄还木有完啊.....Private Declare Function IsPwrHibernateAllowed Lib "powrprof.dll" () As Long
    可以判断是否有休眠功能Private Declare Function SetSuspendState Lib "Powrprof.dll" (ByVal Hibernate As Long, ByVal ForceCritical As Long, ByVal DisableWakeEvents As Long) As Long
    可以设定休眠,当参数Hibernate = 1时
      

  8.   

    收到!俺跟你没完:)至少你要活的比俺长,呵呵。 ^-^
    不然的话,谁来解答俺的问题呢?经实践,SetSystemPowerState 是可以休眠的多谢老大啦,心情指数回升中本帖又加分了,再放一天(懒),也为本版凑点数。(这里人气好像不足哦 :O