【问题标题】:How can I programmatically stop a notebook battery from charging如何以编程方式停止笔记本电池充电
【发布时间】:2023-03-28 04:15:01
【问题描述】:

有一些关于查找电池状态或是否正在充电的天气信息很容易获得。 (GetSystemPowerStatus API 或 System.Windows.Forms.SystemInformation.PowerStatus)。

我希望能够根据某些标准阻止电池充电,例如电池电量 > 20%。

是否有 API 可以做到这一点?

【问题讨论】:

  • 你为什么要这样做?
  • 大多数笔记本电脑的固件中根本没有办法做到这一点。
  • 您是否认为包含由乐高 Mindstorms 制成的机器人的答案超出范围?
  • 插入电源板,然后切换电源板上的开/关按钮。 =)
  • @DevinB:This vaguely-related question of mine 解释了为什么始终将笔记本电脑的电量保持在 100% 并不理想。

标签: windows battery power-management


【解决方案1】:

我认为这是不可能的,因为您需要一些用于电池或电池充电器的 API。

并且此 API 可以为您的笔记本电脑制造商和电池或电池充电器提供支持。

【讨论】:

  • 我使用索尼 Vaio。它有一个名为 Battery Care Function 的实用程序,可让您控制充电水平。
  • 我想知道我们何时(或是否)会看到一家硬件制造商提供其设计的所有可能方面以编程方式实现任何目标!被硬件阻止真是太不酷了。
  • @Kensai - 想象一下恶意软件可能造成的破坏!破坏您的电池并窃取您的个人信息!
【解决方案2】:

老实说,我不知道,但我会看看 APMACPI API。

除此之外,我现在唯一能想到的选择是一个 USB 控制的机械臂,它可以在您需要停止充电时弹出电池,但这可能不是您想要的,并且与 complicator's glove 接壤就过度工程的水平而言。 :)

【讨论】:

    【解决方案3】:

    我认为这是可能的,因为它已获得 IBM (patent no. 7570015) 的专利。

    不确定是否有可用的 Windows API。

    【讨论】:

    • 软件专利是邪恶的。为这样一个抽象的想法申请专利是荒谬的。就像根据红绿灯的颜色过马路的专利想法一样。
    • 幸运的是,这些专利在欧盟无效。
    【解决方案4】:

    其中一个选项是获取设备 (I) 的电池(Microsoft ACPI-Compliant Control Method Battery)。 永远监听 PowerNotification 事件。在每个通知中检查电池的 PowerStatus。 .Net 和 win32 中有用于上述所有目的的 API

    只要 powerstatus 为 >threshold,就保持设备 (I) 处于禁用状态。只要低于该值或您没有使用交流电源(即在移除交流电源之前,您的持续监控软件应该启用该电池设备 - 或者您手动启用它),请立即启用它。

    嗯,...这是一个非常有问题的解决方案,但它可以实现您想要的,尽管您必须非常小心。

    【讨论】:

      【解决方案5】:

      我会得到一个 UPS 并以编程方式告诉它切断所有电源......大多数应该有一个接口来执行此操作。否则,正如有人已经说过的那样 - 计算机控制的电源板可以做到这一点^^

      当我不久前在测试/撰写太多新的笔记本电脑型号时,实际上我曾尝试过这个想法,而电池测试的设置、监控和分析很烦人。

      我编写了一个应用程序,它可以完成所有操作(设置、监听、测量、报告),除了拔掉电源然后重新插上电源并再次启动计算机......

      【讨论】:

        【解决方案6】:

        我认为 MiCTech 是对的。我不认为这是可能的,但这里有一些你可能有用的资源。

        【讨论】:

          【解决方案7】:

          但是,例如,如果 Vista 在其容量高于 96% 时拔下电源然后再插入,则不会为电池充电,因此这意味着可以通过某种方式访问​​和操作。

          【讨论】:

          • 这发生在我的笔记本电脑上,每当我拔掉它,如果容量超过 96% 再重新插入它,它就会说,已插入,未充电。如果我然后拔掉电源,让它放电到 96% 以下,然后再插上它会充电到 100%。
          • 我喜欢这种行为,但想将 % 设置为其他值,例如20%
          • @Reensis: 你认为 Windows 为什么要为这种行为负责?我宁愿认为 BIOS/电池本身对此负责,而 Vista 只是报告事实。
          • 看来Vista可能不是负责,而是bios。但我想知道这是如何在 IBM thinkpad 上完成的。
          • IBM(或现在的联想)Thinkpad 有自己的驱动程序来控制电池充电。如果您构建自己的硬件并编写自己的驱动程序,您可以让它做任何您想做的事情。
          【解决方案8】:

          Lenovo 笔记本电脑可以让您从 bios 或其软件中指定充电级别,但此功能必须在 bios 中实现才能从 windows 访问。

          【讨论】:

            【解决方案9】:

            其实我用的就是这样的充电限制器。有控制软件 - 一个监控电池电量(psutil 模块)并控制外部硬件的 Python 脚本 - 即可以由软件控制的开关。我有 Energenie 和 TP-Link homeplugs 以及我自己的硬件装置。

            因为它是供家庭使用的,所以它根本没有经过优化,但可以轻松适应任何操作系统或硬件。

            如果有兴趣,请告知。软件住在这里:CCC

            【讨论】:

              【解决方案10】:

              我得出结论:

              放弃吧,忘记这件事。这不是问题,所以不要担心。 让它插上电源并充满电。 100%开机时,系统会自动停止充电,并插上电源,所以,也许不用担心磨损电池,因为所有笔记本电脑(如果不是二十世纪的)都有它的自动调节功能。 虽然,如果您需要,请移动您的手并手动打开/关闭它。不要偷懒。相信我,这是 #1 也是最快的解决方案。

              (但是,如果您想浪费时间,这里有一些方法 -
              1) http://www.makeuseof.com/answers/what-battery-manager-can-stop-charging-at-a-certain-percentage/
              2) disable devices temporarily(但您需要禁用“Microsoft ACPI-Compliant Control Method Battery”)
              3) https://superuser.com/questions/813182/how-to-stopdisable-battery-charging-on-laptop

              【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-09-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-12-18
              • 1970-01-01
              相关资源
              最近更新 更多