バッテリー残量が一定レベルを下回ったときに 2 つのプログラムを自動的に終了する方法はありますか?

バッテリー残量が一定レベルを下回ったときに 2 つのプログラムを自動的に終了する方法はありますか?

私はWindows 7を搭載した新しいラップトップをセットアップしており、雨量計サイドバーにシステム情報 (CPU、メモリ、GPU 情報など) を表示します。GPU 統計情報にアクセスするには、バックグラウンドで MSI Afterburner が実行されている必要があります。

とにかく、この余分なソフトウェアのせいでバッテリーの寿命が短くなっているかもしれないと気づいたので、バッテリーが一定レベル (たとえば 50%) を下回ったら、これら 2 つのプログラム (Rainmeter と MSI) を自動的に終了する方法を探しています。他の用途には Autohotkey を使用していますが、それや他のプログラムを使った解決策は見つかっていません。

そしてアイデアは?

答え1

バッテリー残量が 50% を下回った後に 2 つのプロセスを閉じるスクリプトを次に示します。

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
} 

私は、この郵便受け

答え2

これをチェックしてください。http://batterysaver.codeplex.com/
バッテリーの減少に基づいてプロセスを強制終了する機能を提供します。
このプログラムはまだ開発の初期段階にあり、ユーザーフレンドリーではありませんが、それでも仕事をこなすことができ、称賛に値します。ライアン・エメリー開発に尽力してくれた彼の功績に感謝します。プログラムを管理者として実行し、動作させるには少し操作してみる必要があります。

ソース:電源イベント時にプログラムを実行する方法はありますか?

答え3

この回答はRainmeterに特有のものです。テストはしていませんが、これプラグインはバッテリーのパーセンテージを測定できます。バッテリーが特定のパーセントを下回ったときに測定するために使用するスキンを作成しif、その後、Rainmeter を閉じる Autohotkey プログラムである exe を開くことができます。

この質問は古いものだと承知していますが、同じ疑問を持つ人のために、私の意見を述べたいと思います。テストはしていませんが、機能しない理由はないと思います。

関連情報