我在VBA上使用ShellExecute强制计算机进入睡眠状态(而不是休眠状态),为此我需要禁用休眠模式。我输入了rundll32.exe但是我在“powercfg.cpl -hibernate off”中收到错误。
我也试过了:
powercfg.exe /hibernate off
和
powercfg -hibernate off
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpszOp As String, _
ByVal lpszFile As String, _
ByVal lpszParams As String, _
ByVal lpszDir As String, _
ByVal FsShowCmd As Long) As Long
Const SW_SHOWNORMAL As Long = 1
Sub DoSleep()
ShellExecute 0, "runas", "C:\WINDOWS\System32\rundll32.exe", "powercfg.cpl -h off", "C:\", SW_SHOWNORMAL
ShellExecute 0, "runas", "C:\WINDOWS\System32\rundll32.exe", "powrprof.dll,SetSuspendState 0,1,0", "C:\", SW_SHOWNORMAL
ShellExecute 0, "runas", "C:\WINDOWS\System32\rundll32.exe", "powercfg.cpl -hibernate on", "C:\", SW_SHOWNORMAL
End Sub
答案 0 :(得分:0)
经过相当多的试验和错误,我找到了解决方案。这将通过VBA将您的计算机置于睡眠模式:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpszOp As String, _
ByVal lpszFile As String, _
ByVal lpszParams As String, _
ByVal lpszDir As String, _
ByVal FsShowCmd As Long) As Long
Const SW_SHOWNORMAL As Long = 1
Sub DoSleep()
ShellExecute 0, "runas", "powercfg.exe", "/hibernate off", "C:\", SW_SHOWNORMAL
Shell "C:\WINDOWS\System32\rundll32.exe powrprof.dll,SetSuspendState 0,1,0"
ShellExecute 0, "runas", "powercfg.exe", "/hibernate on", "C:\", SW_SHOWNORMAL
End Sub