1

Я устанавливаю новый ноутбук с Windows 7 и использую Rainmeter для отображения системной информации на боковой панели (процессор, память, информация о графическом процессоре и т.д.). Для этого требуется MSI Afterburner, работающий в фоновом режиме для доступа к статистике графического процессора.

В любом случае, я понимаю, что все это дополнительное программное обеспечение может сократить время работы от батареи, поэтому я ищу способ автоматического выхода из этих двух программ (Rainmeter и MSI), когда уровень заряда батареи ниже определенного уровня (скажем, 50%). Я использую Autohotkey для других целей, но не нашел решения с помощью этой или любой другой программы.

А идеи?

2 ответа2

1

Проверьте это. http://batterysaver.codeplex.com/
Дает вам возможность убивать процессы, основанные на уменьшении заряда батареи.
Программа находится на ранней стадии разработки и не очень удобна для пользователя, однако она все еще может выполнить свою работу и поблагодарить Райана Эмерли за его тяжелую работу по развитию. Вам нужно будет запустить программу от имени администратора и поэкспериментировать с ней, чтобы она заработала.

Источник: Есть ли способ выполнить программу на событиях питания?

1

Вот скрипт, который закроет 2 процесса после того, как заряд батареи опустится ниже 50%.

SetTimer, CheckBatteryLevel, 2000
Return

CheckBatteryLevel:

    VarSetCapacity(powerstatus, 1+1+1+1+4+4)
    success := DllCall("kernel32.dll\GetSystemPowerStatus", "uint", &powerstatus)
    batteryLifePercent := ReadInteger(&powerstatus,2,1,false)

    if (batteryLifePercent < 50)
    {
        KillIfExists("Rainmeter.exe")
        KillIfExists("MSI.exe")
    }
    Return

KillIfExists(p)
{    
    Process, Exist, % p
    If (ErrorLevel)
        Process, Close, % p
}

ReadInteger( p_address, p_offset, p_size, p_hex=true )
{
    value = 0
    old_FormatInteger := a_FormatInteger
    if ( p_hex )
    SetFormat, integer, hex
    else
    SetFormat, integer, dec
    loop, %p_size%
    value := value+( *( ( p_address+p_offset )+( a_Index-1 ) ) << ( 8* ( a_Index-1 ) ) )
    SetFormat, integer, %old_FormatInteger%
    return, value
} 

Я изменил код, найденный в этом посте

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .