我并不特别喜欢 Windows 7 的能源管理功能。
我觉得这真的很麻烦,因为我似乎必须更改当前计划才能做任何事情。有时我不想更改计划 - 有时我只想指示计算机完成它正在做的所有事情,只是不要因为我正在下载某些东西而自动进入睡眠状态。
但似乎每次我想要这样做时,我都必须浏览许多不同的屏幕和选项,然后我必须记住随后将其重置。
有没有办法暂时覆盖我的计划中的选项,例如“不进入睡眠状态”按钮?或者“立即关闭显示器”按钮或“关闭盖子时不进入睡眠状态”按钮?
答案1
有一个名为 Insomnia 的免费程序,只要计算机正在运行,它就会保持唤醒状态。
http://dlaa.me/blog/post/9901642
由于链接已经更改过一次,这里是从上面的链接中获取的程序源的重要部分,以便在链接永久断开时可以重现它。
public partial class Window1 : Window
{
private uint m_previousExecutionState;
public Window1()
{
InitializeComponent();
// Set new state to prevent system sleep (note: still allows screen saver)
m_previousExecutionState = NativeMethods.SetThreadExecutionState(
NativeMethods.ES_CONTINUOUS | NativeMethods.ES_SYSTEM_REQUIRED);
if (0 == m_previousExecutionState)
{
MessageBox.Show("Call to SetThreadExecutionState failed unexpectedly.",
Title, MessageBoxButton.OK, MessageBoxImage.Error);
// No way to recover; fail gracefully
Close();
}
}
protected override void OnClosed(System.EventArgs e)
{
base.OnClosed(e);
// Restore previous state
if (0 == NativeMethods.SetThreadExecutionState(m_previousExecutionState))
{
// No way to recover; already exiting
}
}
private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
// Start an instance of the NavigateUri (in a browser window)
Process.Start(((Hyperlink)sender).NavigateUri.ToString());
}
}
internal static class NativeMethods
{
// Import SetThreadExecutionState Win32 API and necessary flags
[DllImport("kernel32.dll")]
public static extern uint SetThreadExecutionState(uint esFlags);
public const uint ES_CONTINUOUS = 0x80000000;
public const uint ES_SYSTEM_REQUIRED = 0x00000001;
}
答案2
我最喜欢的方式是使用内置的移动中心的。可以使用 Windows 8 的 [Windows 键]+[X] 快捷方式快速访问:
然后只需切换演示模式到 開 。
只要打开此特定模式,计算机就不会关闭屏幕,也不会进入睡眠状态。
唯一的缺点:据我所知,移动中心仅适用于移动计算机。
答案3
您可以编写一个批处理文件来执行此操作。这真的很简单。Windows 7 中有一个命令允许您调整电源管理功能。可以设置您的批处理文件以提示您使用不同的功能,并根据您的回答更改设置。这是一个开始。我曾用此命令自动禁用 Windows 7 中的睡眠功能,效果很好。
答案4
Microsoft PowerToys 有一个“Awake”实用程序,可以抑制睡眠模式数小时。
查看此处的文档:https://learn.microsoft.com/en-us/windows/powertoys/awake