【问题标题】:Use Python to Edit Windows 8 Power Options使用 Python 编辑 Windows 8 电源选项
【发布时间】:2014-09-03 21:00:45
【问题描述】:

问题:
每次我重新启动计算机时,我的 Windows 8 电源设置都会恢复默认设置,并在一个小时后让我的计算机进入睡眠状态。除非我这么说,否则我不希望我的计算机进入睡眠状态......我必须进入控制面板>系统和安全>电源选项>编辑计划设置并手动将计算机进入睡眠设置编辑为从不。


我想要什么:
一个用于在 Windows 8 中编辑电源选项的 Python 脚本。我会将它设置为在每次重新启动时运行。

我已经搜索了一个 Python 模块来编辑 Windows 设置,但找不到我要查找的内容。前段时间我玩过 win32api 来控制我的课程,但在其文档中找不到电源选项。


Julius Caesar 关于使用 powercfg 命令行选项的提示非常完美。 这是我最终使用的简单脚本:
import subprocess
subprocess.call("powercfg -change -standby-timeout-ac 0")

-standby-timeout-ac 选项设置为零,因此我的计算机永远不会进入睡眠状态

【问题讨论】:

  • 您要下工作订单吗?你有问题吗?你试过什么吗?实际上,您似乎希望我们为您编写脚本,这不是我们来这里的目的。
  • @ZAD-Man 不费吹灰之力就能意识到我正在寻求能够帮助我实现目标的指导。我也确实提到我尝试过 win32api。
  • 请原谅我的间接性 - 我试图问你一些问题,这些问题显然不适合 Stack Overflow。除非您尝试开发这样的脚本,否则您应该在别处寻找此类建议。如果您正在尝试开发这样的脚本,那么您应该查看Programmers
  • 另外,我的意思是问你是否尝试过编写任何代码 - 我在输入“任何东西”时出错了
  • @ZAD-Man 你能告诉我为什么你认为我的问题不适合 StackOverflow 吗?更具体地说,指出我没有遵循 StackOverflow 指南中的哪些元素stackoverflow.com/help/how-to-ask

标签: python windows windows-8


【解决方案1】:

我认为您应该查看powercfg Windows 的命令并使用 python 的subprocess.call 设置您喜欢的任何内容,例如:

import subprocess
subprocess.call("powercfg -change -monitor-timeout-ac 666")

我想这很容易解释:将电池设置的“-ac”更改为“-dc”,值以分钟为单位,零代表无穷大,显然。

【讨论】:

  • 我正在寻找一个 Python 模块来执行此操作,但完全忽略了发出命令。这非常有效 - 谢谢!
【解决方案2】:

我有一个与 win32com.client 密切相关的解决方案

适用于 Windows 10


import win32com.client


class PowerPlan(Computer):

    def __init__(self, mk="//./root/cimv2/power"):
        super(PowerPlan, self).__init__(mk)
        self.power_info = None
        self.power_plan = None

    def get_active_power_plan(self) -> str:

        power_plans = self.wmi.InstancesOf("Win32_powerplan")

        for plan in power_plans:
            if plan.IsActive:
                match = re.search(r'\{(.+?)\}', plan.InstanceID)
                self.power_plan = plan
                return match.group(1)

    def get_power_plan_index(self, guid_id):

        unknown_list = []
        current_power_plan_index = {"AC": {}, "DC": {}}
        power_index = self.wmi.InstancesOf("Win32_powersettingdataindex")
        for power_value in power_index:
            # print(type(power_value))
            # print(dir(power_value))
            match = re.search(guid_id, power_value.InstanceID)
            if match is not None:
                match = re.search(guid_id + r'\}\\(\w{2})\\\{(.+?)\}', power_value.InstanceID)
                power_mode = match.group(1)
                power_tag = match.group(2)
                try:
                    power_word = PowerPlanGUID(power_tag).name
                except Exception as Err:
                    # print("Unknown Tag GUID: " + power_tag)

                    if power_tag not in unknown_list:
                        unknown_list.append(power_tag)
                    continue

                # power_info = {power_word : power_value.settingindexvalue}

                current_power_plan_index[power_mode][power_word] = power_value.settingindexvalue
        self.power_info = current_power_plan_index
        self._json_dump(self.power_info)

    def set_power_plan_value(self, act_plan_guid, power_mode, power_plan_value_guid, value):
        power_index = self.wmi.InstancesOf("Win32_powersettingdataindex")

        for power_setting in power_index:
            match = re.search(act_plan_guid + r'\}\\' + power_mode + r'\\\{' + power_plan_value_guid + r'\}',
                              power_setting.InstanceID)
            # match = re.search(power_plan_value_guid, power_setting.InstanceID)
            if match is not None:
                print(power_setting.InstanceID)
                print(power_setting.settingindexvalue)
                # Properties_
                power_setting.Properties_("SettingIndexValue").Value = value
                # How to make the changed value work
                power_setting.Put_()
                act_method = self.power_plan.Methods_("Activate")
                self.power_plan.ExecMethod_("Activate")

            else:
                pass

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 2016-05-10
    • 2020-07-29
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多