c++ 我怎样才能改变“节能状态”在windows

y1aodyip  于 2023-03-10  发布在  Windows
关注(0)|答案(1)|浏览(132)

我想更改申请表中的“节能状态”,但是找不到更改方法。有人可以帮助我吗?
“系统-〉电源和电池-〉电池中的关于设置”
我只找到在状态更改时接收通知的方法。

jq6vz3qz

jq6vz3qz1#

您可以使用PowerSetActiveScheme设置当前用户的活动电源方案。

class Program
{
    [DllImport("powrprof.dll")]
    static extern uint PowerSetActiveScheme(IntPtr UserPowerKey, ref Guid SchemeGuid);

    static void Main(string[] args)
    {
        var schemeGuid = new Guid("381b4222-f694-41f0-9685-ff5bb260df2e"); // Replace with the GUID of the power scheme you want to set
        PowerSetActiveScheme(IntPtr.Zero, ref schemeGuid);
    }
}

请注意,PowerSetActiveScheme函数需要提升权限才能运行,因此您可能需要以管理员身份运行应用程序。
您可以使用命令promt中的powercfg /list命令或PowerEnumerate函数获取所有可用的电源模式。
要更改Windows中的节能器状态,可以使用Windows API中的SendMessage函数向系统发送消息,指示应打开或关闭节能器。另请参阅WM_SYSCOMMAND详细信息:
SC_MONITORPOWER 0xF170设置显示的状态。此命令支持具有节能功能的设备,如电池供电的个人计算机。lParam参数可以具有以下值:

  • (显示器通电)
  • 1(显示器将进入低功耗状态)
  • 2(显示器正在关闭)
class Program
{
    private const int WM_SYSCOMMAND = 0x0112;
    private const int SC_MONITORPOWER = 0xF170;

    [DllImport("user32.dll")]
    private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

    static void Main(string[] args)
    {
        SendMessage(IntPtr.Zero, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
    }
}

相关问题