【问】如何让电脑进入休眠状态?

VBAHZ 2005-10-19 05:01:55
假设目标电脑是XP系统(可以使用休眠,但没有启用)
该怎样编程,让其进入休眠呢?

注意:是休眠(要关机的),不是待机哦!!!
...全文
816 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
VBAHZ 2005-10-31
  • 打赏
  • 举报
回复
收到!

俺跟你没完:)至少你要活的比俺长,呵呵。 ^-^
不然的话,谁来解答俺的问题呢?

经实践,SetSystemPowerState 是可以休眠的

多谢老大啦,心情指数回升中。。。

本帖又加分了,再放一天(懒),也为本版凑点数。(这里人气好像不足哦 :O

supergreenbean 2005-10-30
  • 打赏
  • 举报
回复
阿门,老兄还木有完啊.....

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时
VBAHZ 2005-10-29
  • 打赏
  • 举报
回复
不过。。。如果XP下真能做到,仅凭鼠标就能点到休眠就好了
VBAHZ 2005-10-29
  • 打赏
  • 举报
回复
顶楼都不看,瞎支持个啥?
king_ 2005-10-29
  • 打赏
  • 举报
回复
开始=>关闭系统=>休眠

用鼠标逐个单击.

:D
支持~~
VBAHZ 2005-10-29
  • 打赏
  • 举报
回复
真奇怪,俺也不知道为什么。
提了一个问题后,会不断冒出更多的新问题,晕!◎#¥%

不过大家放心,俺会相应的增加分数滴

麻烦大家了,谢谢!

VBAHZ 2005-10-29
  • 打赏
  • 举报
回复
那如何知道休眠功能已开启?
没看懂 GetSystemPowerStatus 的说明,它好像只说了笔记本的状态。
但我只想知道当前系统有没有设置休眠功能,还请老大帮一下,谢谢:)
supergreenbean 2005-10-28
  • 打赏
  • 举报
回复
可否试过SetSystemPowerState函数?
VBAHZ 2005-10-26
  • 打赏
  • 举报
回复
晕,到底有没有人试过啊?

老大,不用键盘是点不到的!

那只有待机,非要按下Shift才会变成休眠啦。

现在就是因为俺手边只有鼠标(无线的),够不着键盘(有线的),所以才想编个软件来实现的。

当然,谁要是嫌钱多,愿意捐给我买无线键盘的,俺会非常乐意的,呵呵 :)

请寄往如下地址:

=============
以下内容只有回复后才可浏览
=============
boyzhang 2005-10-26
  • 打赏
  • 举报
回复
开始=>关闭系统=>休眠

用鼠标逐个单击.

:D
VBAHZ 2005-10-25
  • 打赏
  • 举报
回复
谢谢兄弟参与!

但我要的是休眠,不是关机哦!

休眠就是保存内存数据到硬盘然后关机。

重新通电后,我的程序还是在内存中运行的。
winehero 2005-10-25
  • 打赏
  • 举报
回复
Option Explicit
Const SM_CLEANBOOT = 67

Const EWX_LOGOFF = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4

Private 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 Long

Private Declare Function GetTickCount Lib "kernel32" () As Long

Dim mytime As Date
Dim RUNTIME As Long

Private 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 If

End Sub

Private Sub Command1_Click()
If Val(Text1.Text) * 60 > 60 Then
Text1.Enabled = False
mytime = RUNTIME
Else
MsgBox ("请输入关机时间,时间要大于1分钟!")
End If
End Sub

Private Sub Command2_Click()
Text1.Enabled = True
End Sub

Private Sub Command3_Click()
End
End Sub

VBAHZ 2005-10-24
  • 打赏
  • 举报
回复
GZ

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧