none
скрипт о низком уровне заряда ноутбука RRS feed

  • Вопрос

  • у меня нет соответствующего уведомления.

    ноутбук сам засыпает при 10%, хотя низкий заряд - это 15%.

    кто-нибудь мог бы дописать этот скрипт? он уведомляет о заряде в 95%. спсб

    set oLocator = CreateObject("WbemScripting.SWbemLocator")

    set oServices = oLocator.ConnectServer(".","root\wmi")

    set oResults = oServices.ExecQuery("select * from batteryfullchargedcapacity")

    for each oResult in oResults

    iFull = oResult.FullChargedCapacity

    next

    while (1)

    set oResults = oServices.ExecQuery("select * from batterystatus")

    for each oResult in oResults

    iRemaining = oResult.RemainingCapacity

    bCharging = oResult.Charging

    next

    iPercent = ((iRemaining / iFull) * 100) mod 100

    if bCharging and (iPercent > 95) Then msgbox "Заряд батареи: " & iPercent & "%",vbInformation, "Монитор батареи"

    wscript.sleep 300000 ' 5 минутный интервал опроса заряда батареи

    wend


    • Изменено Artsem K 3 сентября 2018 г. 22:50
    3 сентября 2018 г. 22:49

Ответы

  • ну возможно у вас запрос не прошел, может по таймауту отвалилось... а зачем вы 2 скрипта запускаете? не проще собрать в один?

    set oLocator = CreateObject("WbemScripting.SWbemLocator")
    set oServices = oLocator.ConnectServer(".","root\wmi")
    set oResults = oServices.ExecQuery("select * from batteryfullchargedcapacity")
    
    for each oResult in oResults
    
    iFull = oResult.FullChargedCapacity
    
    next
    
    while (1)
    
    set oResults = oServices.ExecQuery("select * from batterystatus")
    
    for each oResult in oResults
    
    iRemaining = oResult.RemainingCapacity
    
    bCharging = oResult.Charging
    
    next
    
    iPercent = ((iRemaining / iFull) * 100) mod 100
    
    if bCharging and (iPercent > 95) Then msgbox "Заряд батареи: " & iPercent & "%",vbInformation, "Монитор батареи"
    
    if (iPercent < 15) Then msgbox "Заряд батареи: " & iPercent & "%",vbInformation, "Монитор батареи"
    
    
    wscript.sleep 300000 ' 5 минутный интервал опроса заряда батареи
    
    wend

    6 сентября 2018 г. 8:19
  • ээээ, а вы не пробовали вместо iPercent > 95   поставить iPercent < 15

    ????

    --- 

    хотя возможно тут и часть устовия bCharging and нужно убрать. (у вас в условии об этом ничего не сказано)


    • Изменено Svolotch 4 сентября 2018 г. 5:59
    • Предложено в качестве ответа Vector BCOModerator 4 сентября 2018 г. 10:54
    • Помечено в качестве ответа Vector BCOModerator 9 сентября 2018 г. 19:32
    4 сентября 2018 г. 5:54

Все ответы

  • ээээ, а вы не пробовали вместо iPercent > 95   поставить iPercent < 15

    ????

    --- 

    хотя возможно тут и часть устовия bCharging and нужно убрать. (у вас в условии об этом ничего не сказано)


    • Изменено Svolotch 4 сентября 2018 г. 5:59
    • Предложено в качестве ответа Vector BCOModerator 4 сентября 2018 г. 10:54
    • Помечено в качестве ответа Vector BCOModerator 9 сентября 2018 г. 19:32
    4 сентября 2018 г. 5:54
  • поставил вместо - нет эффекта.

    что там 

    bCharging and

    убрать? 

    4 сентября 2018 г. 10:34
  • if (iPercent < 15) Then msgbox "Заряд батареи: " & iPercent & "%",vbInformation, "Монитор батареи"

    вот как то так,

    у вас стоит условие

    bCharging - стоит ли на зарядке (да или нет)

    and (и по нашенски :-) )

    (iPercent < 15) заряд менее 15 процентов

    то есть если просто поменять условие неравенства, он будет сообщать только когда стоит на зарядке и заряд менее 15 процентов 


    • Изменено Svolotch 4 сентября 2018 г. 11:36
    4 сентября 2018 г. 11:35
  • да, теперь работает, спасибо
    • Изменено Artsem K 4 сентября 2018 г. 23:40
    4 сентября 2018 г. 23:39
  • но при одновременном запуске обоих скриптов

    (об уровне в 95% (ноут заряжается) и об уровне менее 15%)

    иногда происходит всякая бяка, например, только что (82%) выскочило "уровень заряда 0%".

    6 сентября 2018 г. 8:00
  • ну возможно у вас запрос не прошел, может по таймауту отвалилось... а зачем вы 2 скрипта запускаете? не проще собрать в один?

    set oLocator = CreateObject("WbemScripting.SWbemLocator")
    set oServices = oLocator.ConnectServer(".","root\wmi")
    set oResults = oServices.ExecQuery("select * from batteryfullchargedcapacity")
    
    for each oResult in oResults
    
    iFull = oResult.FullChargedCapacity
    
    next
    
    while (1)
    
    set oResults = oServices.ExecQuery("select * from batterystatus")
    
    for each oResult in oResults
    
    iRemaining = oResult.RemainingCapacity
    
    bCharging = oResult.Charging
    
    next
    
    iPercent = ((iRemaining / iFull) * 100) mod 100
    
    if bCharging and (iPercent > 95) Then msgbox "Заряд батареи: " & iPercent & "%",vbInformation, "Монитор батареи"
    
    if (iPercent < 15) Then msgbox "Заряд батареи: " & iPercent & "%",vbInformation, "Монитор батареи"
    
    
    wscript.sleep 300000 ' 5 минутный интервал опроса заряда батареи
    
    wend

    6 сентября 2018 г. 8:19
  • ок


    • Изменено Artsem K 9 сентября 2018 г. 11:03
    9 сентября 2018 г. 1:39
  • нет, работает с ошибками.

    например, только что выдал предупреждение о низком уровне - и сразу отключился. при включении обнаружилось, что заряд 0%.

    https://blogs.technet.microsoft.com/jhoward/2013/04/24/get-an-alert-when-my-battery-reaches-95/
    • Изменено Artsem K 26 сентября 2018 г. 12:26
    26 сентября 2018 г. 12:23