Office中国论坛/Access中国论坛

标题: 请教~!如何用代码重新启动电脑? [打印本页]

作者: sxgaobo    时间: 2015-3-6 14:47
标题: 请教~!如何用代码重新启动电脑?
同题!
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Private Sub Command0_Click()
ExitWindowsEx EWX_SHUTDOWN, 0 '关闭计算机
ExitWindowsEx EWX_REBOOT, 0  '重新启动
ExitWindowsEx EWX_LOGOFF, 0  '注销用户
End Sub
论坛里找到的,可只能注销不重新启动,我哪里做的不对吗?
再!如何能先关闭了本mde再重新启动电脑?

作者: tmtony    时间: 2015-3-6 15:43
Sub 关机()                                                             '这部分代码应放在标准模块中
On Error Resume Next
Dim WSHshellA
Set WSHshellA = CreateObject("wscript.shell")
WSHshellA.Run "cmd.exe /c shutdown -s -t 60 -c ""关机吧!"" ", 0, True
End Sub   
作者: tmtony    时间: 2015-3-6 15:44
还有一种VBA代码实现 关机 重启 锁屏
关机

Public Declare Function SHShutDownDialog Lib "shell32" Alias "#60" (ByVal YourGuess As Long) As  Long
Function 关机()
SHShutDownDialog (0)
关机 = "You have canceled shutdown"
End Function
重启

Private Declare Function SHRestartSystemMB Lib "shell32" Alias "#59" (ByVal hOwner As Long, ByVal sExtraPrompt As String, ByVal uFlags As Long) As Long
Private Const SystemChangeRestart = 4

Public Function 重启()
SHRestartSystemMB 0, vbNullString, SystemChangeRestart
End Function

锁屏
Public Function 锁机()
AppActivate (Shell("c:\windows\system32\rundll32.exe user32.dll,LockWorkStation"))
End Function
作者: sxgaobo    时间: 2015-3-6 17:18
谢谢站长!!!
我试了您提供的重启方法,可结果还是注销啊!我想要冷启动那样的。另,注销前有提示,需要点确定才可以!
麻烦您看看,能有别的方法吗?
作者: sxgaobo    时间: 2015-3-6 17:20
tmtony 发表于 2015-3-6 15:44
还有一种VBA代码实现 关机 重启 锁屏
关机

谢谢站长!!!
我试了您提供的重启方法,可结果还是注销啊!我想要冷启动那样的。另,注销前有提示,需要点确定才可以!
麻烦您看看,能有别的方法吗?
作者: tmtony    时间: 2015-3-6 18:32
WSHshellA.Run "cmd.exe /c shutdown -s -t 60 -c ""关机吧!"" ", 0, True
这个不可能是注销吧?
作者: 风中漫步    时间: 2015-3-6 18:40
1楼的代码早不好使了,估计是工作机制变了
作者: sxgaobo    时间: 2015-3-7 19:09
tmtony 发表于 2015-3-6 15:43
Sub 关机()                                                             '这部分代码应放在标准模块中
...

这个可以 关机 ,可我需要的是重启电脑,如何做啊?
我用的是XP+OFF2003
作者: koutx    时间: 2015-3-7 22:30
sxgaobo 发表于 2015-3-7 19:09
这个可以 关机 ,可我需要的是重启电脑,如何做啊?
我用的是XP+OFF2003

实在不行,就自动执行DOS提示符下如下命令吧:
shutdown -r -t 0

作者: sxgaobo    时间: 2015-3-7 23:33
koutx 发表于 2015-3-7 22:30
实在不行,就自动执行DOS提示符下如下命令吧:
shutdown -r -t 0

可以了,谢谢您!!!
为什么说 实在不行?这方法有什么负面作用?还是不安全?
作者: koutx    时间: 2015-3-8 09:38
sxgaobo 发表于 2015-3-7 23:33
可以了,谢谢您!!!
为什么说 实在不行?这方法有什么负面作用?还是不安全?

没有任何不安全的因素。只是不得不回头去用最低级的办法罢了。
作者: sxgaobo    时间: 2015-3-9 10:59
koutx 发表于 2015-3-8 09:38
没有任何不安全的因素。只是不得不回头去用最低级的办法罢了。

谢谢了!!!
作者: tmtony    时间: 2015-3-9 11:59
这个是调用dos命令。
但最好是使用API
但可以实现的话,2种都可以的
作者: sxgaobo    时间: 2015-3-9 22:53
tmtony 发表于 2015-3-9 11:59
这个是调用dos命令。
但最好是使用API
但可以实现的话,2种都可以的

API如何实现啊?
作者: tmtony    时间: 2015-3-10 09:09
API是三楼那种
作者: sxgaobo    时间: 2015-3-12 10:43
tmtony 发表于 2015-3-10 09:09
API是三楼那种

谢谢1




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3